我正在开发一个项目,我有一个名为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 ,不是吗?
答案 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;
}
应用上述内容,您可以轻松查看调用特定方法时的实际情况。
对你有帮助吗?