🎄
CakePHP4.4のErrorHandlerの非推奨エラーについて
この記事はコネヒトアドベントカレンダー2023の17日目の記事になります。
CakePHP4.4からErrorHandlerは非推奨
ErrorHandler(BaseErrorHandoerのsubClass)を使用している場合は以下の非推奨のエラーが表示されます。
"Use of `BaseErrorHandler` and subclasses are deprecated.
Upgrade to the new `ErrorTrap` and `ExceptionTrap` subsystem.
See https://book.cakephp.org/4/en/appendices/4-4-migration-guide.html"
なぜErrorTrapとExceptionTrapに置き換わるかの詳細は過去に書いたのでよければご覧ください。
移行ガイドの通りに置き換える
bootstrap.phpにエラーや例外に関する設定をErrorHandlerのregister関数を通して登録しているのですがそこを公式の移行ガイドに従って置き換えてみます
use Cake\Error\ErrorTrap;
use Cake\Error\ExceptionTrap;
(new ErrorTrap(Configure::read('Error')))->register();
(new ExceptionTrap(Configure::read('Error')))->register();
これでOK!...とはならない場合ももちろんあります。
当然ですが他にErrorHandlerを使用している箇所がある場合は非推奨エラーが出てきます。
例外やエラーのハンドリングを独自にカスタマイズする場合にErrorHandlerを継承したサブクラスをErrorHandleMiddlewareに設定する方法もあると思いますがその場合はErrorHandleMiddlewareから非推奨のエラーが出ます。
ExceptionTrapのインスタンスが設定されるように記述がありますね。
愚直にExceptionTrapに置き換えることができれば楽ですが過去記事にも書いた通り従来のErrorHandlerとExceptionTrap(ErrorTrap)は厳密には役割が違う場合もあるので単純に置き換えるだけではなく、何か別の修正を加える場合もあるのかなと思いました。
最後に
こういう時にテストが書いてあると安心だなと思いました。
Discussion