cakePHPでbakeする時のファイル構造の例
cakePHP使うときには、どんなふうにディレクトリ構成すればいいか悩んだりしませんか?
現在は、なんとなく恐らくこれで正しいんだろうな、という感じで今に至ってしまっているのですが、みんなどうしてるんでしょう。
今日は、今まで、試したことあるパターンについて書いておこうと思います。
あ、ちなみに、これは、いずれもComposer使って、cakePHPとか、DebugKitをインストールしています。
【パターン1】サービス一個だけのパターン
── project_dir ├── Config ├── Console ├── Controller ├── Model ├── Plugin │ └── DebugKit ├── Test ├── Vendor ├── View ├── tmp └── webroot
通常はこんな感じで作るもんだと思ってたんですが、どうですか?
メリット
デメリット
・複数の権限管理をしようとすると、大変になりそうな気がする
サービス1個だけなら、問題ないかと思いますが、管理者権限と一般ユーザ権限でそれぞれ別のAuthController を作って、継承して使ったりするとちょっと大変になるかもです。
ちなみに、サンプルとしてですが、cakePHPで作ってる、RedMineライクなプロジェクト進捗管理ツールのcandycaneは下記のようになってました。(github見てみてね。)
yandod/candycane · GitHub
ぶっちゃけ、僕も正解がわかりません。誰か、知ってたらそっと教えて下さい。
【パターン2】一般向けサービスと管理者向けサービスが相乗りしてるパターン
これは、1つのプロジェクトの中に、一般向けのサービスと、管理者がDBに何かするためのサービスが相乗りしてしまっているパターンです。
└── project_dir ├── Plugin │ └── DebugKit ├── admin(管理者向けサービス) │ ├── Config │ ├── Console │ ├── Controller │ ├── Lib │ ├── Locale │ ├── Model │ ├── Plugin -> ./../Plugin │ ├── Test │ ├── Vendor │ ├── View │ ├── tmp │ └── webroot ├── public(一般ユーザ向けサービス) │ ├── Config │ ├── Console │ ├── Controller │ ├── Lib │ ├── Locale │ ├── Model │ ├── Plugin -> ./../Plugin │ ├── Test │ ├── Vendor │ ├── View │ ├── tmp │ └── webroot └── vendor ├── bin ├── composer └── pear-pear.cakephp.org
メリット
・権限関係の実装が楽
デメリット
・アクセスする際に、毎回下記のように使い分けて、アクセスしないといけない。
http://localhost/project_dir/public http://localhost/project_dir/admin
・Pluginを共用することになる
多分、問題ないかと思いますが、今回のやり方ですと共用してしまっています。
このやり方で気をつけて欲しいのは、adminとpublicのそれぞれのPluginから、大本のPluginに対して、シンボリックを貼るのを忘れないで欲しいということ。
これをやっておかないと、PluginがなくてcakePHPに(゚Д゚)ハァ?みたいな顔されます。
bootstrap.phpに相対パスでうまく書いたとしても、怒られたので、結局こういう形に落ち着きました。
あ、ちなみに、こういう図は、treeコマンドで出力できたりします。
treeコマンドに関する記事はこちら
mac でtreeコマンドを入れる為の方法 - 手が震えたらBARに行こう
treeコマンドは便利なので、入れておくべき - 手が震えたらBARに行こう
よかったら、使ってみてくださいです。