PHP中的靜態屬性、靜態方法、常量屬性

一、靜態屬性、靜態方法編程

在面向對象編程中,咱們不只能夠經過對象訪問方法和屬性,還能夠經過類來訪問它們。這樣的方法和屬性就是「靜態的」(static),必須用static關鍵字來聲明。函數

class staticExample {  this

     staticpublic $num = 0;  對象

       staticpublic function sayNum() {  作用域

              echoself::num;  io

        }  面向對象編程

}  function

靜態方法是以類做爲做用域的函數。靜態方法不能訪問這個類中的普通屬性,由於那些屬性屬於一個對象,但能夠訪問靜態屬性。若是修改了一個靜態屬性,那麼這個類的全部實例都能訪問到這個新值。class

       由於經過類現而不是實例來訪問靜態元素,因此訪問靜態元素時不須要引用對象的變量,而是使用 :: (兩個冒號)來鏈接類名和屬性或類名和方法。變量

 

echostaticExample::$num;  

staticExample::sayNum();  

要從當前類(不是子類)中訪問靜態方法或屬性,可使用self關鍵字。self指向當前類,就像僞變量$this指向當前對象同樣。所以,在staticExample類的外部可使用類名來訪問屬性$num:

staticExample::$num  

而在staticExample類內部,可使用self關鍵字

       使用緣由:

       一、它們在代碼中的任何地方均可用(假設你能夠訪問該類),也就是說,你不須要在對象間傳遞類的實例,也不須要將實例存放在全局變量中,就能夠訪問類中的方法

       二、類的每一個實例均可以訪問類中定義的靜態屬性,因此能夠利用靜態屬性來設置值,該值能夠被類的全部對象使用

       三、不須要實例化對象,就能訪問靜態屬性或方法,這樣咱們就不用爲了獲取一個簡單的功能而實例化對象

 

二、常量屬性

       有些屬性是不能改變的

       在PHP 5能夠在類中定義常量屬性,和全局變量同樣,類常量一旦設置後就不能改變。常量屬性用const關鍵字來聲明。常量不像常規屬性那樣以 $ 開頭。按照慣例,只能用大寫字母來命名常量,以下所示:

class shopProduct {  

     constAVAILABLE = 0;  

       //…  

}  

       常量屬性只包含基本數據類型的值。不能將一個對象指派給常量。像靜態屬性同樣,只能經過類而不能經過類的實例訪問常量屬性。引用常量時不須要用 $ 做爲前導符,以下所示:

  1. echoshopProduct::AVAILABLE;  

       給已經聲明過的常量賦值會引發解析錯誤。

       當須要在類的全部實例中都能訪問某個屬性,而且屬性值無需改變時,應該使用常量。

相關文章
相關標籤/搜索