在开发 Joomla! 插件,我遇到了一些非常有趣的东西。其中一个事件没有返回值,但它从函数内部调用变量。先验知识告诉我,这只有在函数内部的变量是全局的时才有效,但调度程序能够从函数外部调用变量。
编辑:我刚刚发现从函数内部访问的变量需要是参数之一!这可能是 func_get_params() 还是 call_user_func()?
调用代码:
$instance = JDispatcher::getInstance();
$instance->trigger(onJoomCalledEvent, array(&$link, $other_params));
插件(片段):
class plgMyPlugin extends JPlugin{
onJoomCalledEvent($link, $other_params){
$link = "Some Value Here";
return false;
}
}
此函数返回 false,但不知何故,应用程序 (Joomla!) 能够提取 $link 的值。这是怎么做到的?