0
我有一個關於Zendframework 2,Event manager和listener的問題。Zend框架2:AbstractListenerAggregate
class ApiErrorListener extends AbstractListenerAggregate {
public function attach(EventManagerInterface $events)
{
$this->listeners[] = $events->attach(MvcEvent::EVENT_RENDER, __CLASS__ . '::onRender', 1000);
}
public static function onRender(MvcEvent $e)
{
if($e->getResponse()->isOk())
{
return;
}
$httpCode = $e->getResponse()->getStatusCode();
$sm = $e->getApplication()->getServiceManager();
$viewModel = $e->getResult();
$exception = $viewModel->getVariable('exception');
$model = new JsonModel(
array(
'errorCode' => !empty($exception) ? $exception->getCode() : $httpCode,
'errorMsg' => !empty($exception) ? $exception->getMessage() : NULL
)
);
$model->setTerminal(true);
$e->setResult($model);
$e->setViewModel($model);
$e->getResponse()->setStatusCode($httpCode);
}
}
我認爲ApiErrorListener應該是一個監聽器,或者說它是一個觀察者。爲什麼必須實現attach()函數?
在這個環節,你可以看到,只有主題(廣播附加或分離聽衆)。 我覺得我很困惑...
任何人都請幫忙。
在此先感謝。