2012年4月25日水曜日

cakePHPの構造と動作のまとめ(その2)

前回はMVCの基本だけまとめたが、今回はcakePHPを構成しているパーツ全般とその場所に関してのメモ。なお、ぼくはcakePHPディレクトリをcake20とした為、ディレクトリの場所などは/cake20/appというように記述します。

全体の構造

appディレクトリ
基本的に作成したものは全てこの中に格納する。ここの詳細は下に記載。

lib/Cakeディレクトリ
cakePHPのアプリケーションが格納されてる。いじらない方がいいらしい。

pluginsディレクトリ
既に開発されてるプラグインをいれるディレクトリ…と思うんだけど、appディレクトリ内にもPluginディレクトリがあり、CookBookでも「app/Pluginに入れてね」って書いてあるし、いつ使うのかはよくわからない(--;)

vendorsディレクトリ
拡張ライブラリファイルを格納する、らしい。これもappディレクトリ内に重複してる。この使い分け方もまだよくわからない。

appディレクトリの構造
app/Config

基本となる設定ファイルが入る。データベースの設定やルーティング設定など。

□Shemaフォルダ
bakeというプロジェクト自動生成プログラムを走らせた時に設定ファイルが生成される。その際少しいじったりするらしい。

acl.ini.php
acl.php
名前的にACL(Access Controll List)をいじるっぽいです。

core.php
基本となる設定はここをいじることになる。デバッグモードのON/OFFもここ。

bootstrap.php
アプリケーション全体に共通することはここに書くらしい。
中をのぞくと

This file is loaded automatically by the app/webroot/index.php file after core.php

と書かれてる。core.phpをあまり改造せずにこっち側で変更、というようなやり方ができるんだね。

database.php.default
実際はdatabase.phpに名前を変更して使用する。
データベースの接続設定や、前回ちょろっと書いたモデルのデータソースの設定もここでするらしい。

email.php.default
実際はemail.phpに変更して使用する。
cakePHP2.0から実装されたみたい。メール機能を実装する際に設定する。
詳しい使い方はcakePHP2.x「CakeEmail」の使い方に丁寧に書かれています。

routes.php
URLなどのルーティグ設定はここで行う。

app/Controller

コントローラーは基本ここに格納していく。

□Componentフォルダ
作成したコンポーネントファイルはこの中へ。そうすると、コントローラ内で簡単に呼び出せるようになる。

AppController.php
app/Controller内に作成する全てのコントローラーのParentクラスになるみたい。全てのコントローラーに適応させたいものがあればここで拡張する。

PagesController.php
静的ファイルを呼び出す際にここが呼び出されるらしい。
ここ自体はいじらず、Viewディレクトリの中にある「Pages」内にファイルを作成し、
http://localhost/cake20/pages/[ファイル名]
とすることで呼び出せるようになる。

app/Model

モデルファイルはこの中へ保管していく。基本的には1つのDBテーブルをつくったら1つのモデルを作成するみたい。

□Behaviorディレクトリ
作成したビヘイビアはこの中へ格納する。同じようにモデル内で簡単に呼び出せるようになる。

□Datasourceディレクトリ
作成したデータソースアプリケーションはこの中へ。その後使用するにはconfig/database.phpの設定も必要になるみたい。

AppModel.php
全てのモデルに拡張したいメソッドはここに記述する。

app/View

ビューファイルはこの中に新たなフォルダを作成して格納していく。ディレクトリ名なども命名規則に沿って作成しないといけない。

□Elementsディレクトリ
作成したエレメントはこの中へと入れていく。そうすることで、ビュー内で簡単に呼び出すことができるようになる。

□Emailsディレクトリ
メール送信時のテンプレートをこの中へ入れていく。textディレクトリとhtmlディレクトリがあり、どちらもdefault.ctpというファイルが入ってる。
htmlメールにも対応してるんだね。

□Errorsディレクトリ
エラー時の文面をここで作成/編集できる。

□Helperディレクトリ
ヘルパーファイルはこの中へと格納。そうすることで、簡単な操作で呼び出せる。
この中にも「AppHelper.php」という作成した全てのヘルパーファイルを拡張できるファイルが存在してる。

□Layoutsディレクトリ
基本となるレイアウトはここで編集する。中には「Emails」「js」「rss」「xml」「ajax.ctp」「default.ctp」「flash.ctp」が存在する。
(全てHTML描写時(メール送信時)に使うレイアウトであって、この中にjsファイルなどを入れるわけじゃないっぽい)

□Pagesディレクトリ
静的コンテンツをここで作成する。通常、cakePHPでコンテンツを作成する場合はコントローラーとビューとモデルがセットとなるけど、ここに作成することでビューファイルのみでできるようになる。アクセスするには「http://localhost/cake20/pages/[作成名]」で可能。

□Scaffoldsディレクトリ
cakePHPにはScaffoldingという開発援助ツールがあるらしいんだけど、そのカスタムをする際にここにいれるらしい。
多分そこまで使わない気がする。

app/webroot

画像やcssファイル、jsファイルなど、cakePHPの影響を受けさせたくないものを格納する。
一応ここが仮想上のrootディレクトリになるみたい。
中にはそれぞれ格納するディレクトリがあり、index.phpと.htaccessとtest.phpとアイコンが入ってる。
test.phpとindex.phpは殆ど内容は同じ。
http://localhost/[cakePHPディレクトリ]/test.phpとすることでテストページが機動する。
(cakePHP2.0以上の場合、test.phpを機動するにはPHPUnitのインストールが必須)


その他のディレクトリ

□app/Console
コマンドライン上でcakePHPを使う際のアプリケーションはここに納めるみたい。
使い方はここらに詳しく書かれてました。

□app/Lib
内部ライブラリを作成した際にはここにいれる、らしい。
Vendorとの使い分け方は今はまだイマイチ頭に浮かんでこない。

□app/Locale
国際化に対応する為のものをここに入れる。

□app/Plugin
□app/Vendor
上に書いたとおり。通常のプラグインパッケージやベンダーライブラリはここに入れるらしい。上のフォルダとの違いは何だろう?

□app/Test
test.phpにてテストしたい場合、この中のCaseディレクトリの中に入れるみたい。
bakeという自動生成プログラムを実行すると楽しく作成してくれるっぽい。

□app/tmp
一時保存ファイルがこの中に入る。書込み可能にしておく必要あり。


ここまで、中の構成などを見てきた。まだ作成までいってないしあくびがでそうになるけど、動きや構成を知っておかないと後でしょんぼりな思いをしたりするし、何より怖いしね。ただ、これまで見てきた限りでは拡張などで基本的なことは全部できるようになってそうって印象。

[参考リンク]
cakePHP CookBook2.x(日本語版)
cakePHP CookBook2.x(英語版)
cakePHP CookBook1.3(日本語版)

0 件のコメント:

コメントを投稿