2013-10-22 51 views
-1

我寫了這個鍛鍊2班:PHP:訪問受保護的變量不可能

abstract class SocialNetworks 
{ 
    abstract protected function getFacebookGraph(); 

} // class SocialNetworks 

class GetSocialNetworks extends SocialNetworks 
{ 
    protected $fbData; 
    public function setFacebookData($facebookData) { 
     $this->fbData = $facebookData; 
     $this->getFacebookGraph($this->fbData); 
    } 
    protected function getFacebookGraph() { 
     print_r($this->fbData); 
    } 
} 

$facebookData是一個數組)。

在這種模式下,這個類正確打印我傳遞的數組。

但我無法在任何模式下「直接」訪問$fbData,但只能使用$this->fbData。否則我得到

Undefined variable: fbData 

這是正常的或者是有使用直接$fbData

我重複這些都是我在OOP首先練習的方法......,所以我需要學習更多。

+2

這是正常現象,請不要擔心。 – dbf

+1

'$ this-> fbData'是您引用對象屬性時的語法。 '$ fbData'指的是自由變量。這是[在手冊中解釋](http://www.php.net/manual/en/language.oop5.properties.php)。 – Jon

+0

在閱讀Jon關於房產的鏈接之後,請閱讀有關可見性的文章http://www.php.net/manual/en/language.oop5.visibility.php –

回答

1

根據範圍:

$this->variable使用對象

self::$variable靜態類

parent::$variable內使用的子對象的內部使用訪問父類

$variable在本地範圍內使用

班級成員不在本地,他們相對超級。

0

在其他語言中,您可以訪問沒有「this」的類成員。那不是用php的情況。在這裏,你總是必須使用「$ this」。