[英]Unset pass by reference PHP
编辑 :如果我在对象上应用一些业务逻辑,然后我需要它的克隆体才能在其他过程中横行呢? 在对象的新实例上重新应用业务逻辑的效率更高,后者很有可能获得不同的结果? 但是,如果我执行$ a = $ b,则通过引用传递对象是不够的。
让我们来看这个例子:
$a = new test();
$b = $a;
$b->setSomeProp('test');
$a->setSomeProp('failed');
echo $b->getSomeProp(); //returns 'failed'
和
$a = new test();
$b = unserialize(serialize($a));
$b->setSomeProp('test');
$a->setSomeProp('failed');
echo $b->getSomeProp(); //returns 'test'
有替代引用的更好方法吗?
是。 您需要取消设置参考
只需使用unset($b)
我可以看到您的代码已更改。 您正在寻找的是clone
。 尝试这个:
$b = clone $a;
请参阅: PHP全局或$ GLOBALS
来自@Artefacto:“在函数内部,如果要取消设置全局变量,则必须使用unset($ GLOBALS ['varname']),而不是全局$ varname; unset($ varname);。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.