我正在使用symfony/event-dispatcher组件,并且我想尝试让'hello world'工作,我想。
我的应用程序(不是symfony2)运行bootstrap.php
然后MVC进入我命名为composer.php
的文件。
bootstrap.php (必要部分)
<?php
require __DIR__ . '/vendor/autoload.php';
use Events\MsgEvent;
use Symfony\Component\EventDispatcher\EventDispatcher;
$dispatcher = new EventDispatcher();
if ($user_id) {
$dispatcher->dispatch('msg_event', new MsgEvent("I'm logged in as: " . $user['username']));
}
composer.php
<?php
use Events\MsgEvent;
$dispatcher->addListener('msg_event', function (MsgEvent $event) {
echo $event->getMsg();
});
$dispatcher->dispatch('msg_event', new MsgEvent("I got called from composer.php"));
在我的composer.php页面的路线上,我看到'从作曲家调用',但我的'登录为'消息没有出现。当我输出它的返回时,我可以看到它已成功创建了该事件。
我有一种感觉,问题是侦听器是在第一次调度后定义的,并且不会以某种方式存储在调度程序中。但我不确定。
我在这里看不到什么?
答案 0 :(得分:1)
您在注册监听器之前调度该事件。由于bootstrap.php包含在composer.php之前,因此第一个事件将在没有连接侦听器的情况下触发。