从函数中调用非全局变量?

时间:2012-07-17 02:53:50

标签: php function variables joomla global

在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的值。这是怎么做到的?

1 个答案:

答案 0 :(得分:1)

插件定义是否如下所示:

class plgMyPlugin extends JPlugin{

    onJoomCalledEvent(&$link, $other_params){
        $link = "Some Value Here";
        return false;
    }
}

比它pass by reference。如果它确实是你在上面发布的方式,那么它的调用时间通过引用传递,不推荐使用,并从PHP 5.3开始发出警告。