繁体   English   中英

取消按引用传递PHP

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM