非常简短的问题:我想知道更改传递给事件的参数值的最佳方法是否是通过引用传递它?由于某种原因,我有点犹豫要不要这样做,只是觉得这里出了点问题,但不确定是什么。
根据要求的一些示例代码:
class CoreEvent extends \Symfony\Component\EventDispatcher\Event
{
/**
* @var storing the current page content
*/
private $content;
/**
* sets content
*
* @param $content
*/
public function setContent($content)
{
$this->content = $content;
}
/**
* gets content
*
* @return mixed
*/
public function getContent()
{
return $this->content;
}
}
设置事件
$core_event= new CoreEvent();
$content = "some content";
$core_event->setContent($content);
以下是示例侦听器代码:
$this->eventDispatcher->addListener("onPageEnd", array($this, 'onPageEnd'));
调度员:
$container->get('event_dispatcher')->dispatch("onPageEnd", $core_event);
现在说如果我希望调度程序调用的函数(假设许多侦听器正在侦听同一事件)能够更改/修改 $content,似乎有两种方法:
- 第一种方法是更改内容,然后使用上面定义的 setContent 将内容设置回事件
- 第二种方法是通过引用传递内容(我们将不得不修改 setContent 和 getContent abit 来设置和获取内容)