[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で利用する場合も記述方法は一緒です。