我阅读了 PHP 中的对象引用。我对对象引用做了一些实验。
我的疑问是:
我将一个对象分配给另一个变量。然后,我更改了变量的值并打印该变量。这两个变量都会受到影响。我将一个对象引用分配给另一个变量。然后我更改了其中一个变量的值,这会影响两者皆有。
<?php
##Class
class A
{
var $foo = 1;
}
#Assignment
$a = new A();
$b = $a;
echo "Assignment:\n";
$b->foo = 8;
echo $a->foo."\n";
echo $b->foo."\n";
#Reference
$c = new A();
$d =& $c;
echo "References:\n";
$d->foo = 4;
echo $c->foo."\n";
echo $d->foo."\n";
?>
我的问题是:
分配对象和分配对象引用之间有什么区别。
两者相同还是有区别?
最佳答案
What is the difference between assigning an object and assigning an object reference
PHP 没有对象引用,因此您无法与不存在的对象进行比较。
但是我假设您想知道以下之间的区别:
$a = new Foo;
$b = $a;
和
$a = new Foo;
$b = &$a;
第一个是对象的赋值(这是一个对象标识符),第二个是使 $b
成为 $a
的别名。如果我们稍微改变一下流程,差异就会变得很明显:
$a = NULL;
$b = $a;
$a = new Foo;
和
$a = NULL;
$b = &$a;
$a = new Foo;
在第一个示例(赋值)中,$b
为 NULL
。在第二个示例中,$b
是变量别名(也称为 PHP 变量引用)。
执行后,ì在第一个示例中 $b
自然是 NULL
而在第二个示例中它是 $a
。
如您所见,独立于对象,进行赋值与创建变量引用不同。
我希望这能为您澄清一点。不谈引用,只谈变量别名。这更适合 PHP 世界。
关于php - 分配对象和分配对象引用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361561/