2012-11-28 58 views
2

我們最近發現了這種奇怪的PHP行爲。在父類中訪問私人應用程序不應該工作。這是一個功能嗎?也許有人可以解釋它。爲什麼我可以在父級php類中訪問私有財產?

// PHP classes 

class Father { 
    // private property 
    private $value = 'test'; 
} 

Class Child extends Father { 

    // Should fail, se 
    public function setValue() { 
    $this->value = 'why does'; 
    } 

    public function getValue() { 
    return $this->value; 
    } 
} 


$c = new Child(); 

// should fail! 
$c->setValue(); 
echo $c->getValue() . "|"; 

// should fail!!!!!!! 
$c->value = "it work?"; 
echo $c->getValue(); 

// output: why does|it work? 
+4

您可能想使用'protected' – Robik

回答

6

你是不是改變了父親的私有財產,而是引入一個新的屬性value爲孩子。

+0

+1正確。爲了更充分地證明它,在調用'$ c-> setValue()'之前,試着'echo $ c-> getValue()'*。你不會看到'測試'。 – Asaph

+0

謝謝,就是這樣。 – user1861171

相關問題