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変数に格納して置くと
何度もインスタンス化しなくて良い。