cakphp2.0でhelperからcomponentを使いたい場合

MVC全てで同じ共通クラスなど使いたい場合に
venderに置くのがセオリーなのかよく分からない。

helperからcomponentのメソッドを使いたい場合がある。

 
//インスタンス変数として定義
private dateUtil = null;
/**
 * helperでDateUtilComponentを使用する。
 *
 */
public function getWeekNum($y, $m, $d) {
    if ($this->dateUtil == null) {
        //コンポーネントを読み込む
        App::uses('DateUtilComponent', 'Controller/Component');
        //インスタンス化する
        $this->dateUtil = new DateUtilComponent(new ComponentCollection());
    }
    return $this->dateUtil->getWeekNum($y, $m, $d);
}

App::usesで使用したいコンポーネントを読み込む。
new XXXComponent でインスタンス化する。
Componentクラスはコンストラクタの引数として、下記のように
ComponentCollectionを渡してあげないといけないので、
new ComponentCollection()を渡してあげる。

 
public function __construct(ComponentCollection $collection, $settings = array()) {

あとはhelperのprivate変数に格納して置くと
何度もインスタンス化しなくて良い。

コメントを残す

メールアドレスが公開されることはありません。