1 ya da diğer değiştirildiğinde PHP, referans değişkenleri de değiştirin.
Yeni sınıflar örtük referanslarla oluşturduğu, ancak uzantısı değiştirerek üst değiştirmez.
Bu PHP'nin tasarım mı, ya da farklı türü vardır "referanslar?"
Sen referanslarla subclassing (uzanan) kafa karıştırıcıdır.
Bu tarif ne olduğu, genişletiyor:
class ParentClass{ };
class ChildClass extends ParentClass { };
$parent = new ParentClass;
$child = new ChildClass;
$parent->setName('Dad');
$child->setName('Daughter');
echo $parent->name;
// Dad
Aslında, ne istediğini açıklayan edilecek mi?
Referans değişkenler / sınıf geçme tamamen farklı bir konuşma ve gerçekten subclassing / a sınıfını uzanan fikrine bağlı değildir. Daha bu gibi çalışır.
$parent = new ParentClass;
$child = new ChildClass;
$childRef = $child; // $childRef isn't a copy, it's a reference to $child.
$childRef->setName('Daughter');
echo $child->name;
// Daughter
// Notice that it's the same as if you had called setName( ) on $child itself;
PHP Kaynaklar garip bir yapı vardır. $a =& $b;
$b
ile $a
referans yapar. Bu zaman $b
değişiklikleri değeri, $a
, bu değişikliği yansıtacaktır anlamına gelir. Ya da farklı koymak, $a
daima $b
olarak aynı değere sahip olacaktır.
Onları atarken PHP 4, nesneleri dolaylı klonlanmış olacaktır. Örn. $b
bir nesne ise, kod $a = $b
[(3)] $b
bir kopyası olan yeni bir nesne oluşturmak ve {atamak istiyorum }. Genellikle nesnelere referans semantik istiyorum çünkü bu, daha çok bir sorundur. Bu etrafında almak için, nesneler ile uğraşırken başvuruları kullanmak zorunda kaldı. PHP 5'ten beri bu değişti, bu yüzden bugün size başvuruları kullanmalısınız çok az durumlarda (varsa) vardır.