by shigemk2

当面は技術的なことしか書かない

CakePHP 2 to 3 ErrorHandlerの覚書

github.com

独自ErrorHandlerでcomposerからインストールできるやつはbootstrap.phpにErrorHandlerを追加でregisterすることで独自ErrorHandlerを利用できる。 試し切れていないけど、new registerは複数行書くことができるので、ErrorHandlerを多種類呼び出すこともできるようだ。 それとは別に、3.4以上からMiddlewareなる概念が出てきた。ExceptionはErrorHandlerMiddlewareを通るし、その他のWarningやNoticeはErrorHandlerを通るので、例外処理について独自実装を書きたいときはErrorHandlerMiddlewareのhandleExceptionに追加で実装したらいいし、その他のWarningやNoticeについて独自実装したいときはErrorHandlerの_displayErrorに追加で実装を書けばいい。

// config/bootstrap.php
<?php

// web
use Encount\Error\EncountErrorHandler;
(new EncountErrorHandler(Configure::read('Error')))->register();

// shell
use Encount\Console\EncountConsoleErrorHandler;
(new EncountConsoleErrorHandler(Configure::read('Error')))->register();
// 3.4.0 or higher
// src/Application.php
<?php

use Encount\Middleware\EncountErrorHandlerMiddleware;

$middleware
    //->add(new ErrorHandlerMiddleware(Configure::read('Error.exceptionRenderer')))
    ->add(new EncountErrorHandlerMiddleware(Configure::read('Error.exceptionRenderer')))