【发布时间】:2014-03-04 11:43:00
【问题描述】:
我有一个关于 Zendframework 2、事件管理器和监听器的问题。
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()函数?
在此链接中,您只能看到主题(广播者附加或分离侦听器)。 我想我很困惑......
请大家帮忙。
提前致谢。
【问题讨论】:
标签: php zend-framework zend-framework2 observer-pattern