1

我有一组 PHP 函数,我想将它们移到一个新类中。其中一个功能是在参数中使用 &$obj 来修改原始对象:

function process_new_place_names(&$obj)

在此函数中对 $obj 所做的任何更改都将传递回脚本。

问题是,我也可以在 PHP 类中执行此操作吗?另外,这种方法的术语是什么?

4

2 回答 2

3

你绝对可以在课堂上做到这一点。它被称为通过引用传递。

进一步阅读:

http://php.net/manual/en/language.references.php http://php.net/manual/en/language.oop5.references.php

于 2012-10-20T14:57:33.813 回答
2

正如 SomeKittens 所说,这在一个类中是完全可能的。但是,如果$obj它本身是一个类的实例,而您需要做的就是修改其成员变量(称为变异对象),则无需通过引用传递它。

例如,以下代码将输出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';
}
于 2012-10-20T15:05:17.763 回答