Php 无法使用zend2 EventManager传输对象
我正在使用zend2事件管理器触发事件。然后,我将回调附加到该事件的侦听器 代码工作到这一点,问题是我无法使用触发器传输对象 我不断得到以下信息Php 无法使用zend2 EventManager传输对象,php,events,zend-framework2,Php,Events,Zend Framework2,我正在使用zend2事件管理器触发事件。然后,我将回调附加到该事件的侦听器 代码工作到这一点,问题是我无法使用触发器传输对象 我不断得到以下信息 Call to a member function getId() on a non-object 下面是我的代码 触发器: use ZfcBase\EventManager\EventProvider as eventManger; //code/method that gets the sender's object not shown he
Call to a member function getId() on a non-object
下面是我的代码
触发器:
use ZfcBase\EventManager\EventProvider as eventManger;
//code/method that gets the sender's object not shown here;
class EventTriggers extends eventManger
{
public function triggerEvent()
{
// var_dump($this->getSender()->getId())
$this->getEventManager()->trigger(__FUNCTION__, $this, array('sender' => $this->getSender()->getId(),
'receiver' => 11));
}
}
请注意,如果Ivar\u dump该$this->getSender()->getId()将返回Id。但是,一旦将其置于触发器上,值将不再显示
侦听器(保存在另一个类中,通过SharedEventManager访问)
接收器Id显示在上述代码中。唯一未显示的值是sender对象
非常感谢您对我做错的事情提出一些建议。可能是
$此
指向了错误的对象
像这样试一下:
public function triggerEvent()
{
$sender_id = $this->getSender()->getId();
$this->getEventManager()->trigger(__FUNCTION__, $this, array(
'sender' => $sender_id,
'receiver' => 11
));
}
嗨,威尔特,谢谢你的回复。我试过了,但它仍然没有返回对象。该对象根本没有被传递on@PaulKendal“但它仍然不返回对象”-您正在调用
getId()
,所以这肯定是字符串
或int
?对不起。我尝试返回字符串和对象,即$this->getSender()或$this->getSender()->getId()。它没有返回任何内容您说过当您执行var\u dump
时,它会返回id
。那么现在$sender\u id
没有任何值了吗?嗨,库纳尔。我在执行触发器时注释掉了var_转储。我只是在想知道发送者对象是否真的有值时才使用了未注释的var_dump。如果getSender()
是公共方法,这很奇怪。请尝试在事件处理程序$e->getTarget()->getSender()->getId()
中访问它,看看会发生什么
public function triggerEvent()
{
$sender_id = $this->getSender()->getId();
$this->getEventManager()->trigger(__FUNCTION__, $this, array(
'sender' => $sender_id,
'receiver' => 11
));
}