2012年4月25日水曜日

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

cakePHPの命名規則に関してメモしようと思ったんだけど、その前にフォルダの中を見ているうちに一体どういう構造になっててどういう動きをするんだろうっていう方が気になったから、先にそっちをまとめておこうと思う。

大まかなことはcakePHP CookBook2.xに書いてあるんだけど、ちょっとフォルダ構成を見て気になったので。

あと、このページにも結構詳細に書いてあった。
cakePHP guide:HTTP リクエストに対する CakePHP の動作フロー

基本1:cakePHPはMVCフレームワークであること

PHPフレームワークには結構多い構造らしいんだけど、cakePHPもMVCデザインを採用してるらしい。 これは主な処理の基本である「データ(DB)の取扱い」「描写」「リクエストと計算」をそれぞれ切り分けて作成していこうというもの。

要は今まで資料集めもプレゼン資料作成もスケジュール管理も全部1人でやってたのをそれぞれ担当を設けてやっていくって感じなのかな。

そうすることでそれぞれのパーツを複数で開発していきやすくなるし、変更がある際にもどこを変更するべきかが明確になる(らしい)。

M:モデル(Model)

ここでは主にデータベース処理やPost時の内容の検証(バリデーション)などを行う。テーブル内容の設定といったものもここに書き込む。
基本は1テーブルにつき1つのモデルページを作成する。他のテーブルと結合する場合も、ここに設定を書き込むと自動的にjoinしてくれる。SQLインジェクション対策は自動的に行ってくれる。
また、モデルにはビヘイビアデータソースコールバックと呼ばれる拡張ツールがある。

ビヘイビア
汎用的な処理を複数のモデルページで使えるようにするツールで、クラスファイルとして格納できる。

データソース
csvやRSSフィードなどもモデルとして扱えるようにするツール。面白いのはMysqlや他のDBと同じようにRSSフィードも扱えるようになるってことかも。
(そもそも、cakePHPでは基本的にSQL文は使わずに独自の関数で呼び出すらしい)

コールバック
データの検索、挿入、更新、削除の前後に行う共通の操作を記述する。

V:ビュー(View)

これは最後のウェブページの描写を担当するいわばデザイナー。
ウェブページを手軽に作成していく為の様々なツール(ヘルパー)が用意されている。
またビューページは他にエレメントレイアウトといったページで構成される。

ヘルパー
フォームの作成などを手助けしてくれる。ヘルパーは多数用意されていて、javascriptを簡単に記載できるようなのもある。
CookBook(英語版)を読むと、Prototype.jsMootools.jsjQuery.jsをサポートしてるらしい。もちろんそれらを使うにはダウンロードする必要があるけど。
またヘルパーは自作もでき、そこでもコールバック関数が使えるみたい。

レイアウト
著作権など全てのページで描写するものは基本的な形はレイアウトにまとめることができる。

エレメント
メニューバーといった、複数のページで描写するものはエレメントにまとめることができる。

C:コントローラー(Controller)

MVCの順序では最後になるんだけど、最も根本的な部分となる。内部的な処理を行ったり、Modelからデータを受け取ったり、Viewへデータを渡したりする。またCookieやSession処理、主なセキュリティ処理やPost/Getで受け取ったデータの検証なども行う。

コントローラーもまたコンポーネントコールバック関数といった拡張機能がある。

コンポーネント
コントローラー版ヘルパーのようなもので、役に立つコンポーネントが既にいくつか用意されているし、当然自作もできる。

コールバック
Viewでの描写前や、リクエスト前などに共通して他の動作をさせたい場合、コールバック関数に記載することで実装できる。


長くなってしまったので、続きは次回にでも。
だけどこう見るだけでも1つのページにアクセスする際相当沢山のページを読み込むっていうのがわかるなぁ。
ただそれを管理しやすい仕組みにはなってるらしい。それもまあ次回に。

[参考リンク一覧]
cakePHP CookBook2.x(日本語版)
cakePHP CookBook2.x(英語版)
cakePHP guide:HTTP リクエストに対する CakePHP の動作フロー

0 件のコメント:

コメントを投稿