symfony / event-dispatcher没有收到第一次发送

时间:2015-08-18 17:56:53

标签: php symfony events

我正在使用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页面的路线上,我看到'从作曲家调用',但我的'登录为'消息没有出现。当我输出它的返回时,我可以看到它已成功创建了该事件。

我有一种感觉,问题是侦听器是在第一次调度后定义的,并且不会以某种方式存储在调度程序中。但我不确定。

我在这里看不到什么?

1 个答案:

答案 0 :(得分:1)

您在注册监听器之前调度该事件。由于bootstrap.php包含在composer.php之前,因此第一个事件将在没有连接侦听器的情况下触发。