Possible Duplicate:
PHP __get and __set magic methods面向對象的PHP - __set()無法訪問受保護的屬性
與OOP剛開始。 。無論如何不知道,如果我理解正確,但不應該改變$attribute
的值,因爲功能__set()
?
<?php
class aclass
{
protected $attribute; //edited from public to protected
public function __get ($name)
{
return $this->$name;
}
public function __set ($name, $value)
{
if($name == "foo")
{
$this->$name = $value;
}
}
}
$a = new aclass();
$a->attribute = "bar";
echo $a->attribute;
?>
當我運行此錯誤消息顯示:
「致命錯誤:。無法訪問受保護的財產ACLASS :: $屬性第16行」 第16行是「回聲$ a->屬性「 - 其他帖子說該屬性必須設置爲PROTECTED,但不起作用。我使用PHP 5.4.3 - 任何想法?
你應該檢查其他問題,如http://stackoverflow.com/questions/4713680/php-get-and-set-magic-methods – Deele
這是問過很多次之前,請開一個問題之前做一個長的搜索。 –
如果你剛剛開始使用OOP,我建議稍後留下'__get'和'__set';在第一種情況下學習是有用的,但不是強制性的;掌握主要概念,並在以後回到神奇的方法。有些人不喜歡它們,並堅持編寫名爲'getPropname()'和'setPropname()'的單獨方法;這可能是一個更簡單的入門方法。此外,即將推出的PHP 5.5版本將提供更多的語法選項來定義屬性,這意味着對魔法方法的需求會減少很多。 – SDC