チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【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');
結果
昇順になるので、順番が逆になる。