2011-11-06 47 views
-2

我知道這是一個真正愚蠢的問題,但我並不真正瞭解某些東西,我每天都在使用它們,但我不確定它們是如何工作的。PHP:屬性visibilty,靜態等

class Bootstrap 
{ 
public static $frontController = null; 
public static $root = ''; 

什麼是公共靜態,保護,公共...之間的差異是什麼?當它最好使用每一個...

問候

+2

你可以讓你的標題更好嗎? (更具描述性,你也不需要在標題中用PHP標記它,因爲我們有標籤)。 ty :) – PeeHaa

+4

參考:http://php.net/manual/en/language.oop5.php –

+1

我不確定這是否是一個好的問題SO - OOP的原則是很多,系統地學習更容易來自一本書(當然還有一篇在線文章)。維基百科的文章給出了一個概述,但它很難消化:http://en.wikipedia.org/wiki/Object_(computer_science) –

回答

2
  • static表示值通過self::$var代替$this->var訪問,不是特定實例(即它也是靜態方法可用)因而非常適合單身人士和類似的模式
  • 一個public var爲來自世界各地的,即無論是從類內外
  • 一個protected VAR是從類中唯一的訪問,從類繼承訪問其中變量被定義的類
  • 一個private VAR是從類

既然你問OOP基礎裏面才能訪問,這裏有一些值得說明的是更多的關鍵字:

  • abstract類不能被實例化,只能用作基類;包含抽象方法的類必須是抽象的,除非基類的所有抽象方法實際上是實現了一個類從一個抽象類繼承必須是抽象
  • 一個final類不能從
+0

如果聲明一個受保護的變量,我不能在一個靜態方法中訪問它,只有那些被聲明爲static ..或者它必須被保護爲靜態的? – Uffo

+0

現在明白!非常感謝 – Uffo

1

公共及受保護的可見性。公共每個人都有權訪問,只保護繼承,父類可以訪問。

靜態是所有對象通用的變量,而不是每個類都有自己的變量,它是由所有對象「共享」的。

現在到了另外一個問題,當使用它:

  • 所有屬性應該是私有的,保護他們免受不好的用法。
  • 所有的getter和setter方法應該是公共的,所以其他對象可以設置和獲取值。