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