手が震えたらBARに行こう

駄文を吐き出して、今日もなんとか、元気に生きていこうと思います。twitterアカウントは、@tabunmuri255です。よろしくです。

cakePHPでbakeする時のファイル構造の例

cakePHP使うときには、どんなふうにディレクトリ構成すればいいか悩んだりしませんか?
現在は、なんとなく恐らくこれで正しいんだろうな、という感じで今に至ってしまっているのですが、みんなどうしてるんでしょう。
今日は、今まで、試したことあるパターンについて書いておこうと思います。

あ、ちなみに、これは、いずれもComposer使って、cakePHPとか、DebugKitをインストールしています。

【パターン1】サービス一個だけのパターン

── project_dir
    ├── Config
    ├── Console
    ├── Controller
    ├── Model
    ├── Plugin
    │         └── DebugKit
    ├── Test
    ├── Vendor
    ├── View
    ├── tmp
    └── webroot

通常はこんな感じで作るもんだと思ってたんですが、どうですか?

メリット

・アクセスが楽、そして、綺麗な気がする

こうやって作ると、

http://localhost/project_dir/

で、いきなりアクセスできます。

デメリット

・複数の権限管理をしようとすると、大変になりそうな気がする

サービス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に行こう

よかったら、使ってみてくださいです。