シムノート

PHPフレームワークSymfonyの学習帳

ユーザ用ツール

サイト用ツール


サイドバー

メニュー



このエントリーをはてなブックマークに追加

blog:2015-12-08:超入門_symfony3_ディレクトリ構成

超入門 Symfony3 : (2) ディレクトリ構成

ディレクトリ構成

Symfonyで使用する主要なディレクトリの構成です。
一見すると似たようなディレクトリがあります。最初に少し迷いそうな所を説明します。

omikuji
├── app                    # 設定や画面テンプレートを格納し、基本的にPHPのコードは格納しない
│   ├── Resources
│   │   └── views      (1) # 画面テンプレートを格納
│   └── config             # 設定ファイルを格納
│
├── bin                    # コマンドラインツールを格納
│
├── src                    # 自分が作成するソースコードを格納
│   ├── AppBundle      (a) # アプリケーションのソースコードを格納
│   │  ├── Controller      # コントローラを格納
│   │  ├── Entity          # エンティティを格納
│   │  ├── Repository      # レポジトリを格納
│   │  ├── Form            # フォーム
│   │  └── Resources
│   │       └── views  (2) # 画面テンプレートを格納 
│   │                      # *** このチュートリアルでは使いません ***
│   │
│   └── その他のBundle  (b) # 汎用的なライブラリのソースコードを格納
│                          # *** このチュートリアルでは使いません ***
│
├── web                    # ドキュメントルート(css, javascript, image等)
│
└── vendor             (c) # composerでインストールしたパッケージを格納

Bundleディレクトリ

自分が作成するアプリケーションのソースコードは上記(a)のAppBundleディレクトリに格納する。

Bundleはプラグインのような物です。もし、他のアプリケーションでも使用できる汎用的なライブラリとして切り出せる内容があれば、それを上記(b)の位置に別のBundleディレクトリを作成して格納します。そうすることで、パッケージングして再配布しやすくなります。

実はSymfony自体も多数のBundleの組合せで構成されています。実態は上記(c)の中に格納されています。

viewsディレクトリ

画面テンプレートは(1)の"app/Resources/views"に格納する。

アプリケーションの画面テンプレートを格納できるディレクトリは2ヶ所あります。上記の(1)と(2)です。画面テンプレートは自分が作成するソースコードなので、(2)の方に格納するのが一般的かと思いきや、(1)に格納するのがベストプラクティスです。その理由は使いやすさにあります。画面テンプレートをソースコード内で指定する書式を以下に示します。

(1) appにあるテンプレート(2) Bundleにあるテンプレート
xxxx/index.html.twigバンドル名:XXXXコントローラ名:index.html.twig
xxxx/subdir/index.html.twigバンドル名:XXXXコントローラ名:subdir/index.html.twig

(1)の方がシンプルです。(2)は記述がとても長くてコーディングが辛くなります。

また、Bundleディレクトリにテンプレートを格納すると、テンプレートがあっちこっちに分散してしまい、探すのに苦労することになります。特にBundleディレクトリを積極的に使う理由がなければ、appディレクトリ以下にテンプレートを格納して、一元管理することをお薦めします。


Comments



47 +2 = ?
blog/2015-12-08/超入門_symfony3_ディレクトリ構成.txt · 最終更新: 2015/12/28 01:33 by tsubo