class A {
public $foo = 'empty';
}
class B {
public $foo = 'empty';
public $bar = 'hello';
}
function normalAssignment($obj) {
$obj->foo = 'changed';//对$obj的原始对象的成员造成影响
$obj = new B;//对$obj的原始对象没有影响
}
function referenceAssignment(&$obj) {
$obj->foo = 'changed';//对$obj的原始对象的成员造成影响
$obj = new B;//对$obj的原始对象造成影响
}
$a = new A;
$b = $a;
$b->foo = 'abc';//对$a的成员造成了影响
$b = new B;//不影响$a
echo $a->foo;//abc
normalAssignment($a);
echo get_class($a), "\n";//A
echo "foo = {$a->foo}\n";//foo = changed
referenceAssignment($a);
echo get_class($a), "\n";//B
echo "foo = {$a->foo}\n";//foo = empty
echo "bar = {$a->bar}\n";//bar = hello
PHP手册-php对象的引用
最新推荐文章于 2021-04-02 07:48:38 发布