例如,我有以下课程。
class A {
public $foo = 1;
}
$a = new A;
$b = $a; // a copy of the same identifier (NB)
根据current PHP docs标识符的副本,是否一直如此?如果不是,它何时改变?
答案 0 :(得分:7)
事情并非如此。在PHP4中,在分配给新变量时复制了一个对象。当PHP5被引入时,这改变为传递被分配对象的引用。
在PHP 5中有一个新的对象模型。 PHP对对象的处理已被完全重写,从而实现更好的性能和更多功能。在以前的PHP版本中,对象的处理方式与原始类型(例如整数和字符串)相同。这种方法的缺点是语义上整个对象在分配变量时被复制,或者作为参数传递给方法。在新方法中,对象由句柄引用,而不是通过值引用(可以将句柄视为对象的标识符)。