Zendが提供するSkeletonアプリケーションが_error 500
_を処理しないことに気づきました。 ZF1には、それを処理するErrorController
があったことを私は知っています。私はオンラインでいくつかの調査を行いましたが、これに対する明確な解決策は見つかりませんでした。
では、ZF2でエラーを処理するための最良の方法は何ですか。モジュールごとですか、それともグローバルな例外/エラーハンドラーですか?
別の解決策がini_set('display_errors', true);
を_index.php
_に追加することであることは知っていますが、その解決策はあまり好きではありません。フレームワークはエラーを処理するための何らかの方法を提供する必要があるようです。
例外をグローバルにキャッチしている次の例のように、キャッチした後は、とにかく例外を処理できます...:
Module.php
のonBootstrap
メソッドでは、イベントが発生したときに実行する関数をアタッチできます。エラー(例外)が発生したときに実行される関数をアタッチします。
public function onBootstrap(MvcEvent $e)
{
$application = $e->getApplication();
$em = $application->getEventManager();
//handle the dispatch error (exception)
$em->attach(\Zend\Mvc\MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'handleError'));
//handle the view render error (exception)
$em->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER_ERROR, array($this, 'handleError'));
}
次に、任意の方法でエラーを処理する関数を定義します。次に、例を示します。
public function handleError(MvcEvent $e)
{
//get the exception
$exception = $e->getParam('exception');
//...handle the exception... maybe log it and redirect to another page,
//or send an email that an exception occurred...
}