phpextra/event-manager-silex-provider

此包已被放弃且不再维护。作者建议使用 phpextra/event-manager#4.0.0 包。

1.0.0 2014-04-15 15:53 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:33:53 UTC


README

#EventManager的Silex提供者

无需配置。

此提供者将替换您的EventDispatcher类。默认的symfony事件未被移除且具有更高优先级。这意味着PHPExtra事件总是在sf事件之后运行。

以下是一个参考,展示PHPExtra的事件如何映射到标准的sf事件。所有事件都是可取消的(sf事件中的propagationStop属性)。与symfony不同,可取消的事件仍然发送给所有监听者。此行为可能在事件管理器的未来版本中发生变化。

Symfony事件映射

kernel.request
PHPExtra\EventManager\Silex\Event\RequestEvent
Symfony\Component\HttpKernel\Event\GetResponseEvent

kernel.controller
PHPExtra\EventManager\Silex\Event\PreDispatchEvent
Symfony\Component\HttpKernel\Event\FilterControllerEvent

kernel.view
PHPExtra\EventManager\Silex\Event\PostDispatchEvent
Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent

kernel.response
PHPExtra\EventManager\Silex\Event\ResponseEvent
Symfony\Component\HttpKernel\Event\FilterResponseEvent

kernel.finish_request
PHPExtra\EventManager\Silex\Event\PostRequestEvent
Symfony\Component\HttpKernel\Event\FinishRequestEvent

kernel.terminate
PHPExtra\EventManager\Silex\Event\PostResponseEvent
Symfony\Component\HttpKernel\Event\PostResponseEvent

##安装和用法

如果您使用日志记录器,它将自动注入到事件管理器中。现在每个类都可以成为监听者。

$app = new Silex\Application(array('debug' => true));
$app->register(new \PHPExtra\EventManager\Silex\EventManagerProvider());

$em = $app['event_manager'];

$em->addListener(new \PHPExtra\EventManager\Listener\AnonymousListener(function(RequestEvent $event){
    echo "Im in RequestEvent (Sf GetResponseEvent)";
}));

$em->addListener(new \PHPExtra\EventManager\Listener\AnonymousListener(function(SilexKernelEvent $event){
    echo "Im in some Symfony KernelEvent !";
}));

$em->addListener($app['my_controller']);

$em->addListener($app['mailer']);

...

##异常处理

在事件过程中发生的异常在生产模式下将被抑制。在开发模式下,事件管理器将中断事件循环并重新抛出所有异常。

$em->setThrowExceptions(false); // suppress exceptions and continue event loop

##贡献

所有代码贡献都必须通过pull request进行。Fork项目,创建一个功能分支,并向我发送pull request。为确保代码库一致,您应确保代码遵循 编码标准。如果您想帮忙,请查看问题列表。

##要求

请参阅 composer.json 获取完整的依赖列表。

##作者

Jacek Kobus - kobus.jacek@gmail.com

许可信息

See the file LICENSE.txt for copying permission.