cakePHP4のドキュメントよりinitializeとbeforeFilterの宣言方法を参考にするとエラーが発生してしまいました。
Declaration of App\Controller\TestController::initialize() must be compatible with App\Controller\AppController::initialize(): void in /Applications/MAMP/htdocs/cakephp4/src/Controller/TestController.php on line 14
Declaration of App\Controller\TestController::beforeFilter(Cake\Event\Event $event) should be compatible with Cake\Controller\Controller::beforeFilter(Cake\Event\EventInterface $event)
initialize()は、関数の宣言後にvoidを付けなければならないらしい。
public function initialize(): void // <- これが必要
{
parent::initialize();
}
beforeFilterのエラーの方では良くあることらしく、宣言するものが足りないのと、引数がないのが多くの原因らしいです。
// controllerの上部に記述
use Cake\Event\Event;
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
}
しかし、上記でも消えず。エラー文を良く確認するとEventではなく、今はEventInterfaceなのだとか。
use Cake\Event\EventInterface;
public function beforeFilter(EventInterface $event)
{
parent::beforeFilter($event);
}
色々とクラス名なども変わってきたりしているので、公式ドキュメントの他に、エラー文から認識していく必要がありそうです。