CakePHPのお約束として、コントローラーの各メソッドでレンダリング前の共通の処理としてbeforeFilter()メソッドをオーバーライドさせますが、CakePHP3だと、なぜかこんなエラーが
Declaration of App\Controller\UsersController::beforeFilter() should be compatible with App\Controller\AppController::beforeFilter(Cake\Event\Event $event)
ん?重複してる?そりゃそうだけど…なんで?
CakePHP3.x
原因はuse Cake\Event\Event;が抜けてたこと。
//先頭で
use Cake\Event\Event;
//クラスの中で
public function beforeFilter(Event $event){
parent::beforeFilter($event);
//なんかやりたいこと
}
CakePHP3は名前空間の扱いがほんとにめんどくさい!
しかも、CakeのCookbookに書いてないorわかりにくい。
CakePHP2の時代は、ほとんどのものがデフォルトでロードされていたので、あまり気にする必要はなかったのですが、CakePHP3はいちいち書かないといけない。
ネットの情報でも、名前空間のことが言及されていないことが多くて混乱するんだよね。