Php 无法使用zend2 EventManager传输对象

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

我正在使用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 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
    ));
}