【发布时间】:2012-10-10 23:25:16
【问题描述】:
我有一组 PHP 函数,我想将它们移到一个新类中。其中一个功能是在参数中使用 &$obj 来修改原始对象:
function process_new_place_names(&$obj)
在此函数中对 $obj 所做的任何更改都会传回脚本。
问题是,我也可以在 PHP 类中执行此操作吗?另外,这种方法的术语是什么?
【问题讨论】:
我有一组 PHP 函数,我想将它们移到一个新类中。其中一个功能是在参数中使用 &$obj 来修改原始对象:
function process_new_place_names(&$obj)
在此函数中对 $obj 所做的任何更改都会传回脚本。
问题是,我也可以在 PHP 类中执行此操作吗?另外,这种方法的术语是什么?
【问题讨论】:
【讨论】:
正如 SomeKittens 所说,这在类中是完全可能的。但是,如果$obj 本身就是一个类的实例,而您只需修改其成员变量(称为mutating 对象),则无需通过引用传递它。
比如下面的代码会输出baz;
class Foo
{
public $bar;
}
function process_new_place_names($obj)
{
$obj->bar = 'baz';
}
$obj = new Foo();
$obj->bar = 'bar';
process_new_place_names($obj);
echo $obj->bar;
仅当您想更改变量本身的值时,才需要传递引用;例如,重新分配对象引用:
function process_new_place_names(&$obj)
{
$obj = new Foo();
$obj->bar = 'baz';
}
【讨论】: