例如,我有以下類。使用對象分配時,PHP是否始終創建副本?
class A {
public $foo = 1;
}
$a = new A;
$b = $a; // a copy of the same identifier (NB)
按照current PHP docs標識符的一份拷貝,一直是這樣的情況?如果不是,它什麼時候改變?
例如,我有以下類。使用對象分配時,PHP是否始終創建副本?
class A {
public $foo = 1;
}
$a = new A;
$b = $a; // a copy of the same identifier (NB)
按照current PHP docs標識符的一份拷貝,一直是這樣的情況?如果不是,它什麼時候改變?
這並非總是如此。在PHP4中,一個對象被分配給一個新變量時被複制。當PHP5被引入時,這改變了傳遞被分配對象的引用。
在PHP 5有一個新的對象模型。 PHP的對象處理已經完全重寫,可以獲得更好的性能和更多的功能。在以前的PHP版本中,對象被處理爲基本類型(例如整數和字符串)。這種方法的缺點是,在分配變量或作爲參數傳遞給方法時,會在語義上覆制整個對象。在新方法中,對象由句柄引用,而不是由值引用(可以將句柄看作對象的標識符)。
它並沒有說它是一個副本。它說的是完全不同的東西。 –