てきとう

ワーワーゆうとります

CakePHP キホンザベーシック

去年末あたりから格闘中のハイテクフレームワークCakePHP
PHPすらいまいち解ってないのに、やるハメに挑戦することに。
今は薦められるがまま1.2を使っていますが、なんか1.1系列と、色々あるみたいです。
MVCという便利なアレがあります。アレとは何ぞ、というのは後述です。


★Model View Controller

Model
ビジネスロジックを処理するスクリプト。
このスクリプトは、要求された情報を取得して、変数などに保持する。
それ以外の処理は一切行わない。
エラーが発生した場合も、その情報をプロパティに持つなどするに留まり、
それ以上の処理を行ってはならない。

View
ビジネスロジックで得た情報を画面に出力するスクリプト。
テンプレートエンジン(Smartyなど)を用いて、目的のデザインで出力する。
それ以外の処理は一切行わない。
エラーが発生した場合は、ブラウザへの出力を行わず、
エラー画面を出力するのみに留まり、それ以上の処理を行ってはならない。

Controller
ファンクションなどを判別し、ModelとViewを呼び出すスクリプト。
全体の流れをコントロールするに留まり、それ以外の処理を行ってはならない。


★付随する便利機能
MVCにはそれぞれ外部ファイルで共有できるスケット的便利機能が使えます

・Model
 behavior…モデルに関する再利用性の高いメソッドをまとめたクラスです。
・view
 helper…ビヘイビアと同様に、コントローラに関する再利用性の高いメソッドをまとめたクラス
・Controller
 Component…HTML のテンプレートの記述に関する再利用性の高いメソッドをまとめたクラス


MVCの流れ
コントローラが呼び出される(コントローラをメイン/サブと多層化する事もある)
$_REQUEST['func']などの値からファンクションを取得する
ファンクションに応じたモデルを実行する
モデルの情報を引数にして、ビューを実行する


★命名規則
悩み所です。便利なサイト発見。http://www.cpa-lab.com/tech2/inflects/参考にしてくだ〜さいっ。

★編集のポイント
基本的にカスタムするのはappフォルダ以下です。cakeフォルダの中身はドンタッチミーです。
どうしてもいじりたくなったら、cakeフォルダ内の該当ファイルをappにコピーして、
そちらを編集しましょう。

CakePHPの挙動
どうやって動いているのかを理解したいなというメモです。
拠点となる大きなファイル、cake三連星は以下のファイル。

app/webroot/index.php
 すべてのリクエストの起点
 ファイルパスの定数定義
 cake/bootstrap.php の読み込み
 Dispatcherの実行

cake/bootstrap.php
 初期化処理を行う
 以下のファイルの読み込み
  ├cake/basics.php
  ├app/config/core.php
  ├cake/config/paths.php
  ├cake/libs/object.php
  ├cake/libs/session.php
  ├cake/libs/inflector.php
  └cake/libs/configure.php
 設定情報の読み込み
 ルーティング用URLを$_GET[’url’]に設定
 cake/dispatcher.php の読み込み
 ビューキャッシュ出力処理
cake/dispatcher.php
 フレームワークの大枠となり、それぞれの処理を実行する
 実行するコントローラー、アクションなどの決定
 コントローラーにアクセス情報などの値を設定
 コントローラーのインスタンス生成
 コンポーネント生成
 モデルのインスタンス生成
 コントローラーのbeforeFilterメソッド実行
 コントローラーのstartupメソッド実行
 scaffoldが設定されていて、かつアクションが存在しない場合、scaffold処理実行
 コントローラーのアクション実行(scaffold実行時は実行しない)
 コントローラーのrenderメソッド実行(scaffold実行時は実行しない)
 コントローラーのafterFilterメソッド実行(scaffold実行時は実行しない)