【CakePHP2.4】独自コントローラーを継承した際、ComponentとHelperのマージを制御する。

CakePHPはAppControllerで読み込んだComponent、Helperがそれを継承した子コントローラーのそのものと自動的にマージされる。

しかし継承時、親と子の間に独自で定義したコントローラーを挟んだ場合、独自コントローラー内でのComponent、Helperはマージ対象から外れてしまう。

なので、ユーザーの意図した挙動に修正するために独自コントローラー内で下記変数に少々細工を加える。

App::uses('AppBaseController', 'Controller');

class AppBaseController extends AppController {
	public $components = ['hogeComp'];

	// マージ対象の親クラスを変更する
	protected $_mergeParent = 'AppBaseController';
}

上記の通り、「$_mergeParent」にセットする値を変更することでマージの挙動を変更することが可能。