[0001]CakePHPの共通のライブラリ3種Component・Helper・Vendor
■Component
コントローラー(Controller)から呼び出す共通ライブラリはコンポーネント(Component)です。Controller配下にComponentフォルダがあるので[app/Controller/Component]Componentフォルダ配下にComponentファイルを作成します。この例ではコンポーネント名を[Common]にしています。
CommonComponent.php
<?php
class CommonComponent extends Component {
public function getString() {
return "How are you?";
}
}
次に例で作ったコンポーネントをコントローラー(Controller)から呼び出してみます。この例ではコントローラー名を[Admin]にしています。
AdminController.php
<?php
App::uses("AppController",'Controller');
class AdminController extends AppController {
public $components = array('Common');
public function index(){
$str = $this->Common->getString();
}
}
完成です!コンポーネントを利用する場合、public $components = array('Common');ここで利用することを伝えています。コンポーネント名は[Common]でしたので、arrayで名前を渡しています。利用したいコンポーネントが複数ある場合はカンマで区切り、public $components = array('Common','他のコンポーネント名');このように記述します。
この例ではコントローラーのindex関数の中でコンポーネントのgetString関数を実行したので、$str = $this->Common->getString();ここの$strには[How are you?]の文字列がセットされました。
■Helper
ビュー(View)から呼び出す共通ライブラリはヘルパー(Helper)です。View配下のHelperフォルダ[app/View/Helper]Helperフォルダ配下にHelperファイルを作成します。この例ではヘルパー名を[Common]にしています。
CommonHelper.php
<?php
App::uses('AppHelper', 'View/Helper');
class CommonHelper extends AppHelper {
function getYear()
{
$start = intval(date('Y'));
$end = 1920;
$valArr = array();
for($i=$start;$i >= $end;$i--){
$valArr[$i] = $i;
}
return $valArr;
}
}
次に例で作ったヘルパーをビュー(View)から呼び出すための準備をします。Viewから呼び出すにはコントローラー(Controller)から呼び出しておく必要があります。この例では先ほどのコントローラー[AdminController.php]に追記しています。
AdminController.php
<?php
App::uses("AppController",'Controller');
class AdminController extends AppController {
public $components = array('Common');
public $helpers = array('Common');
public function index(){
$str = $this->Common->getString();
}
}
ヘルパーを利用する場合、public $helpers = array('Common');ここで利用することを伝えています。ビュー名は[Common]でしたので、arrayで名前を渡しています。利用したいコンポーネントが複数ある場合はカンマで区切り、public $helpers = array('Common','他のビュー名');このように記述します。
次に例で作ったヘルパーをビュー(View)から呼び出してみます。
<select name="year_from">
<?php foreach($this->Common->getYear() as $v) {
echo '<option value="'.$v.'">'.$v.'</option>';
}
?>
</select>
完成です!この例ではViewでヘルパーのgetYear関数を実行したので、$this->Common->getYear()ここで1920から現在の年の数字の配列がセットされました。それを利用してドロップダウンリストを作成しています。
■Vendor
最後はベンダー(Vendor)です。ベンダーはControllerからもViewからも呼び出せる共通ライブラリです。appのVendorフォルダ配下[app/Vendor]にVendorファイルを作成します。この例ではVendorを[SelectList]にしています。
SelectList.php
<?php
class SelectList {
public static $alcoholList = array(
"1" => "ビール",
"2" => "日本酒",
"3" => "ワイン",
"4" => "スパークリングワイン",
"5" => "焼酎",
);
}
次に例で作ったVendorを呼び出すための準備をします。呼び出すにはコントローラー(Controller)でusesしておく必要があります。この例では先ほどのコントローラー[AdminController.php]に追記しています。
AdminController.php
<?php
App::uses("AppController",'Controller');
App::uses('SelectList', 'Vendor');
class AdminController extends AppController {
public $components = array('Common');
public $helpers = array('Common');
public function index(){
$str = $this->Common->getString();
$list = SelectList::$alcoholList;
}
}
完成です!App::uses('SelectList', 'Vendor');ここでベンダーをusesしています。ベンダー名は[SelectList]でしたので、名前を渡しています。利用したいベンダーが複数ある場合はuses行を追加していきます
この例ではベンダーのalcoholListを取得したので、$list = SelectList::$alcoholList;ここで$listにはアルコールの種類が入った配列がセットされました。
Viewで利用する場合も記述方法は一緒です。