Aşırı mülkiyet PHP Dolaylı modifikasyonu

0 Cevap php

i bu basit sınıf vardır:

class A
{
    var $children=array();

    function &__get($name)
    {
        if($name==="firstChild")
        {
            if(count($this->children)) $ret=&$this->children[0];
            else $ret=null;
        }
        return $ret;
    }
}

Hiçbir çocuk varsa "firstChild" özelliğine erişerek onun ilk referans olarak çocuk veya boş dönmesi gerekir.

$a=new A;
$c=&$a->firstChild;

Şimdi sınıfı en az bir çocuğu varsa o inşaat büyük ama (ve null değerinin dönmesi gerekir) değilse o hatayı "aşırı mülkiyet Dolaylı değişiklik" tetikler.

Bu neden olur? Peki bu "Dolaylı değişiklik" olduğunu şey değiştirmeye çalışıyorum değilim? I referans işaretini kaldırırsanız ve neden ($c=$a->firstChild;) çalışıyor?

0 Cevap