ディレクトリ構成
myapp/
├── application/ # ドメインコード
│ ├── _Global.php # アプリケーションのグローバル設定(BaseGlobal を継承)
│ ├── _Const.php # アプリケーションの定数
│ ├── _Config.php # データソースを含む基本設定
│ ├── _Config/ # ステージごとの設定(alpha · beta · production、README.md を参照)
│ └── <Namespace>/ # モデルと DAO
├── public/ # ← ドキュメントルート
│ ├── .htaccess
│ ├── __flexagon.php # 全リクエストのフロントコントローラー
│ ├── _entry.php # リクエスト開始時のフック
│ ├── _prepare.php # セッション開始後のフック
│ ├── _router.php # ディスパッチ処理
│ ├── _Template/ # 共通テンプレート(head · tail · error404)
│ └── **/*.php # URL と 1 対 1 で対応するページ
├── script/ # CLI ジョブ
├── docker/ # コンテナ設定(Apache · entrypoint · php.ini)
├── .env.example.php # .env.php のサンプル(シークレットのキー)
├── Dockerfile # dev · alpha · beta · production ターゲット
├── compose.yaml # ローカル開発用のコンテナ
├── build.xml # コンテナを使わないデプロイ(ant production)
├── composer.json
├── flexagon.php # ブートストラップローダー
└── vendor/
└── flexagon/framework/ # フレームワークコア
application/ 配下では、名前空間がそのままディレクトリパスに対応します。 ExampleUser\UserDAO → application/ExampleUser/UserDAO.php
_Flexagon\ 名前空間はフレームワーク本体に解決されるため、通常はアプリケーション側で定義する必要はありません。
Web に公開するのは public/ だけにしてください。 プロジェクトルートには .env.php のシークレットが、application/ には設定とコードが置かれています。ドキュメントルートがプロジェクトルートを指していると、これらがそのまま配信されてしまうおそれがあります。