方法和引用溢出

时间:2011-05-29 21:53:05

标签: php function methods reference overflow

我正在开发一个项目,我有一个名为View::import的方法。这会收到两个参数string name, reference mixed value我这样写是为了更好地理解,但是是PHP!)。

目前,要调用此方法,我需要这样做:

    $test = 1;
    View::import('test', $test);

工作得很好,但我想打电话给

    View::import('test', 1);

对于静态情况,我不需要替换原始变量内容,只需“即时存储”。

完整的方法是:

    private static $globals;
    public static function import($key, &$value){
        self::$globals->{$key} = &$value;
    }

如果我改为:

    public static function import($key, $value){ // no-reference

在某些情况下,我无法更改原始值。我不会制作像import_static或类似的新方法。

存在溢出此方法? (我知道PHP不完全支持这个。)

最接近的代码是:

    View::import('test', $temporaryTest = 1);

但我认为这是一个很大的 workarround ,不是吗?

1 个答案:

答案 0 :(得分:2)

您可以通过更改代码设计来“溢出”。例如,做这样的事情:

public static function import($key, $value){
    self::$globals->{$key} = $value;
    // do something with $value
    return $value;
}

然后你就可以写:

$test = 1;
$test = View::import('test', $test);

以及:

View::import('test', 1);

下面是一些替代解决方案,实际上涉及创建新的但有意义的方法:

// Your old method
public static function import($key, $value){
    self::$globals->{$key} = $value;
}
// Your new method
public static function bind($key, &$value){
    self::$globals->{$key} = &$value;
}

应用上述内容,您可以轻松查看调用特定方法时的实际情况。

对你有帮助吗?