2009-08-05 38 views
0

我在設置PHP類的私有屬性時出現問題,但是我的__set()方法被調用,但是當我在一個屬性是數組它執行這使得SER不可用第一我__get()方法:/設置一個私有屬性,這是一個PHP類上的數組失敗

$this->person['name'] = 'perro'; 

簡單地說,不工作,關於這個問題的任何想法?

+0

您可以顯示__set()方法嗎? – danieltalsky 2009-08-05 19:30:54

+0

你能展示更多的代碼嗎?就像一個小的測試用例一樣,重現了這個問題?還要確保你的error_reporting級別如此E_NOTICE錯誤顯示(這可能真的幫助你在這一個);最後,你確定你的班上有「人」財產嗎? – 2009-08-05 19:37:01

回答

3

如果你的屬性是私人,不能夠看到它(可以是讀取,也不會寫)從是否完全正常的一個子類private意味着你的屬性是私人到它定義的類。

這之間的區別private和protected:

  • 私人=訪問只針對一類是在
  • 聲明爲保護=訪問任何類「是一種」類的類型找你的聲明(超或子類)
  • 公開=任何人

有關這個在PHP更多的信息訪問,看到Visibilty的說明書中無。

你也許會發現關於該網絡的詳細信息,如果必要的話:這是面向對象編程的基礎之一,是真正的在其他語言(如C++,例如)
搜索關鍵字例如「可見性」,「封裝」或「信息隱藏」 - 與OOP /面向對象編程相關

0

解決這個問題,這個問題是我是想我的類中設置一個私有變量,我不明白爲什麼,如果im exteing PHP不讓我碰這個屬性

來糾正這個問題,我只是改變了我的屬性,從私人到保護

+1

這就是私人財產的定義。只有定義私有屬性的類可以改變/訪問其內容。受保護的屬性允許子類改變/訪問它。 剛剛看到Pascal MARTIN很好地解釋了這種差異。 – 2009-08-05 20:05:53

相關問題