Php 方法和引用溢出
我正在做一个项目,我有一个方法叫做Php 方法和引用溢出,php,function,methods,reference,overflow,Php,Function,Methods,Reference,Overflow,我正在做一个项目,我有一个方法叫做View::import。这将接收两个参数字符串名,引用混合值(我这样写是为了更好地理解,但它是PHP!) 目前,要调用此方法,我需要执行以下操作: $test = 1; View::import('test', $test); 工作很好,但我也喜欢叫: View::import('test', 1); 对于静态情况,我不需要替换原始变量内容,只需要“动态存储” 完整的方法是: private static $globals;
View::import
。这将接收两个参数字符串名,引用混合值
(我这样写是为了更好地理解,但它是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\u static
或类似的新方法
是否存在溢出此方法的方法?(我知道PHP并不完全支持这一点)
最接近的代码是:
View::import('test', $temporaryTest = 1);
但我认为这是一个大问题,不是吗?您可以通过更改代码的设计来“溢出”这一点。例如,执行以下操作:
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;
}
应用上述方法,您将很容易看到在调用特定方法时实际发生的情况
这对你有帮助吗?你不能这样做。或参考或价值,某物1
$temporaryTest=1
将通过此分配的结果(1),而不是引用。在确定中,将通过自己的$temporaryTest
(即等于1
)。这就是我目前的工作方式。(至少适用于PHP5.3)1。是的,我真的缺少引用(我编辑了你的答案);2.问题是这个值将来可以通过访问$globals
的其他方法更改(但还有另一件事);3.是 啊bind
这个名字听起来更适合我。现在,我将处理这个问题:)谢谢