【CakePHP2.x】コアライブラリを使ってフレームワークを使いこなす ~CakePHP2実践入門「8章」~
コンポーネント
Controllerで同じ処理を行う時、コンポーネントとして外に追い出して共通利用する
ビヘイビア
Modelで同じ処理を行う時、複数モデルが関連するときに取得する範囲を設定する
(パフォーマンスの低下を防ぐ)
ヘルパー
Viewで複雑な処理を行う時、共通化して外に追い出す
コアライブラリ
フレームワークの挙動そのものを扱うような機能を提供
複雑な連想配列を扱う
CakePHPでは各種設定、モデルから取得するデータに連想配列を使う事が多いが、
複雑な連想配列の場合はSet(2.2以降はHash)クラスを使うことで簡単に利用可能。
$users = $this->User->find("all");
配列から特定のデータ抽出 Set::extract
$results = Set::extract('/User/mail',$users);
キーと値のリスト生成 Set::combine
$mail_map = Set::combine($users , '{n}.User.id' , '{n}.User.name');
配列同士比較
$a = array(
0 => array('name' => 'main'),
1 => array('name' => 'about'),
);
$b = array(
0 => array('name' => 'main'),
1 => array('name' => 'about'),
2 => array('name' => 'contact'),
);
$result = Set::diff($a,$b);
結果
contact
連想配列の特定キーを基準に配列をソートする
※深い要素でのソート
$a = array(
0 => array('Person' => array('name' => 'Jeff')),
1 => array('Person' => array('name' => 'David')),
2 => array('Person' => array('name' => 'Ave'))
);
$result = Set::sort($a,'{n}.Person.name','asc');
結果
昇順になるので、順番が逆になる。