在php中,透過static關鍵字修飾的成員方法稱為靜態方法,靜態方法的記憶體空間是固定的,只能存取類別中的靜態成員,可以透過「類別名稱::靜態方法()”語句存取靜態方法。
本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦
在PHP 中,透過static 關鍵字修飾的成員屬性和成員方法稱為靜態屬性和靜態方法,這裡可以將它們統稱為靜態成員,類別中的靜態成員與類別中的一般成員不同,靜態成員不會被實例化到物件中,也就是說我們不需要實例化一個類,就可以透過類別來存取靜態成員。
在類別中宣告靜態變數很容易,我們可以在類別的普通成員前面加上一個 static 關鍵字,就可以將這個普通成員變成靜態成員了。這樣一來,我們可以在不實例化類別的情況下,直接存取類別中的這些靜態成員。存取靜態成員的語法格式如下:
类名::$静态属性 类名::静态方法()
其中::
符號被稱為範圍解析操作符,用於存取靜態成員、靜態方法和常數,也可以用於覆寫類中的成員和方法。
如果要在類別內部的成員方法中存取靜態屬性,只要在靜態屬性的名稱前加上操作符self::
即可。
靜態方法
#靜態方法的記憶體空間是固定的,相對來說更省資源。
創實例的創一個實例就要開闢一個新內存,耗費資源靜態方法屬於類別所有,類別實例化前即可使用;
#靜態方法只能存取類別中的靜態成員;
static內部只能出現static變數和其他static方法!而且static方法還不能使用this等關鍵字,因為它是屬於整個類別;
靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。
靜態方法的優點:
(1)在程式碼的任何地方都可以用(假設可以存取該類別);
(2)類別的每個實例都可以存取類別中定義的靜態屬性,可以利用靜態屬性來設定值,該值可以被類別的所有物件使用;
(3)不需要實例物件就能存取靜態屬性或方法。
靜態方法和普通方法的差異
# 靜態方法在建立物件前就可以使用了,非靜態方法必須透過new出來的物件來呼叫。
靜態方法可以透過 類別名稱::方法名稱直接呼叫。普通方法需要建立一個實例,也就是new一個對象,然後透過對象名稱->方法名的方式來呼叫靜態類別只能包含靜態成員,否則會拋出編譯錯誤;
#非靜態類別既可以包含非靜態成員也可以包含靜態成員靜態類別是不能實例化,之所以不能實例化,是因為靜態類別會導致C#編譯器將該類別同時標記為abstract和sealed,並且編譯器不會在類型中產生一個實例的建構函數,導致靜態類別不能實例化;
#非靜態類別可以,並且靜態成員的存取只能透過類別來進行訪問,因為靜態成員是屬於類別的。
推薦學習:《PHP影片教學》
以上是php中什麼叫靜態方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!