這篇文章主要介紹了php 靜態屬性和靜態方法區別詳解,需要的朋友可以參考下
靜態
public、private、protected
靜態屬性
在屬性或方法前加static關鍵字,即為靜態屬性
在實際工作中會有一個類的多個對象,可能會共用一份資料。
解決辦法:
1:類常量,不能更改。
樣本:
2:有時在共用一份資料後,還要所有的共用此資料的對象還允許更改。
所以就有static
文法:
樣本:
提示:靜態屬性與類常量相似(相同),唯一的區分是類常量不可以更改,靜態屬性可以更改。存取方法是一樣的。
:: 只能訪問類常量、靜態屬性、靜態方法
靜態屬性需要加$,常量名前沒有$,所以訪問類常量時根本不需要加。
-> 後面不需要加$
靜態方法
方法前加static,即為靜態方法
靜態成員的訪問:靜態屬性的訪問
公用靜態屬性在類外訪問:
文法:
類名::靜態屬性名
類內訪問所有的靜態屬性
靜態方法的訪問
類外訪問
文法:
靜態方法,存在類空間。
類名::方法名();
類內訪問:
文法:
self::方法名();
靜態與非靜態區別:
靜態屬性儲存在類空間,非靜態屬性儲存在對象空間
靜態屬性的訪問,通過類訪問(::),非靜態屬性的訪問通過對象(->)
靜態方法的訪問,通過類訪問(::),
如果一個方法內部不操作屬於對象空間的屬性,那麼將封裝成靜態方法,通過類來調用,此種方法效率會快很多。
靜態方法中不能出現$this
*******
重要提示:屬於類的使用類名或self::,如果屬於對象的使用對象名或$this->。(普通方法除外==>雖然普通方法屬於類空間,但還是需要使用$this或對象名訪問)
魔術方法
php輸出語句:
echo 一種文法結構
只能輸出純量資料型別,對於布爾值false沒有輸出
print 函數
只能輸出純量資料型別,對於布爾值false沒有輸出
print_r() 不但能輸出純量資料型別,還能輸出資料,對於布爾值false沒有輸出
var_dump($v1,$v2); 輸出變數更多的資訊,主要是給程式員偵錯工具使用
__tostring();
在對一個對象進行echo時,意味著,將一個結構,轉換成字串。
__tostring()魔術方法,是在由於某種操作欲將一個對象轉換為字串時,由PHP自動執行機制,來調用此方法。
此方法就是為了捕獲錯誤(Fatal Erorr 致命錯誤),輸出一個提示資訊
樣本:
__clone();
clone(); 複製函數
以上就是本文的全部內容,希望對大家的學習有所協助。