Cakephpのコンポーネント
CakephpにはComponentというコントローラの拡張機能が用意されている。
view → helper
model → behavior
controller → component
という感じでmvcの各レイヤーで拡張機能が用意されているので、サイトの規模に応じて、各レイヤーで拡張機能を利用してコードを分けることで管理運用面でメリットを得ることができるようになっている。
使用方法
宣言
Componentの使い方について書いてみようと思う。前提としてコントローラで利用するComponentを定義しておかないといけない。
1.2系、2.3系共通
public $components = array('isRobots');
上の例はisRobotsというコンポーネントを読み込むように設定した例です。
実装
isRobotsはどこにどうやってコーディングされているのでしょうか。Cakephpのバージョンによってコンポーネントのファイル名は異なっています。具体的には以下のようになります。
1.2系の場合
app\controllers\components\is_Robots.php
2.3系の場合
app\Controller\Component\isRobotsComponent.php
ファイルの中身は以下のようになります。
1.2系、2.3系共通
class isRobotsComponent extends Object { function gen() { } }
コンポーネントのコーディング方法については、バージョンにより差はないようですが、ファイル名の設定が異なっているので注意が必要です。
呼び出し
コントローラからコンポーネントを利用するには以下のようにします。
1.2系、2.3系共通
$this->isRobots->gen();
上の方法でコンポーネントを定義することができます。例えば、robots(ウェブ上の任意のクローラ)を判定する処理をgen()の中に記述して、真偽を返すコンポーネントとしてコントローラから利用することができます。