【发布时间】:2019-06-25 03:45:06
【问题描述】:
我正在使用下一个功能,我从here得到它
/**
* Attach (or remove) multiple callbacks to an event and trigger those callbacks when that event is called.
*
* @param string $event name
* @param mixed $value the optional value to pass to each callback
* @param mixed $callback the method or function to call - FALSE to remove all callbacks for event
*/
function event($event, $value = NULL, $callback = NULL)
{
static $events;
// Adding or removing a callback?
if($callback !== NULL)
{
if($callback)
{
$events[$event][] = $callback;
}
else
{
unset($events[$event]);
}
}
elseif(isset($events[$event])) // Fire a callback
{
foreach($events[$event] as $function)
{
$value = call_user_func($function, $value);
}
return $value;
}
}
我正在添加一些匿名函数,以便在事件执行时调用。
event("Test", NULL ,function() { return "First Call";});
event("Test", NULL ,function() { return "Second Call";});
之后我会做一个简单的回显来查看结果。
<!DOCTYPE html>
<html>
<body>
<?php
$test = event('Test');
echo $test;
?>
</body>
</html>
预期的输出是
“第一次通话第二次通话”
但我只是得到
“第二次通话”
起初我认为函数被替换而不是添加到数组中,我回显了数组,似乎调用它在那里,因为输出看起来像这样
数组 ( [0] => 闭包对象 ( ) [1] => 闭包对象 ( ) )
我在这里搜索并尝试使用谷歌搜索,但找不到任何可以指导我找到解决方案的答案。
注意:服务器使用的是PHP版本5.3.10
【问题讨论】:
标签: php