在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的值。这是怎么做到的?
答案 0 :(得分:1)
插件定义是否如下所示:
class plgMyPlugin extends JPlugin{
onJoomCalledEvent(&$link, $other_params){
$link = "Some Value Here";
return false;
}
}
比它pass by reference。如果它确实是你在上面发布的方式,那么它的调用时间通过引用传递,不推荐使用,并从PHP 5.3开始发出警告。