ディレクトリ構成

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/ には設定とコードが置かれています。ドキュメントルートがプロジェクトルートを指していると、これらがそのまま配信されてしまうおそれがあります。