什麼是靜態方法?
不是所有的變數和方法都要透過建立物件來呼叫。可以透過為變數和方法加上static關鍵字來直接呼叫。
呼叫靜態成員的語法格式為:
關鍵字::靜態成員
關鍵字可以是:
( 1)self,在類別內部呼叫靜態成員時所使用。
(2)靜態成員所在的類別名,在類別外呼叫類別內部的靜態成員時所使用。
注意:在靜態方法中,只能呼叫靜態變量,而不能呼叫普通變數;而普通方法則可以呼叫靜態變數。
靜態方法實例講解:
靜態方法實例1:
<?php class Math{ static function squared($input){ return $input*$input } } echo Math :: squared(3);
運行結果為:9
上面是個簡單的實例,值得注意的是,在靜態方法中,不能使用$this關鍵字,因為可能會沒有可以引用的物件實例。因為靜態方法可以不需要實例化物件。
使用靜態成員,除了可以不需要實例化物件外,另一個作用就是在物件被銷毀後,仍然保存被修改的靜態數據,以便下次繼續使用。這個概念比較抽象,下面舉個例子具體分析。
靜態方法實例2:
<?php header("content-type:text/html;charset=utf-8"); class Play{ static $num = 0; function showNum(){ echo '这是你第' . self :: $num . '次玩LOL'; self :: $num++ ; } } $play1 = new Play(); $play1 -> showNum(); echo '<br/>'; $play2 = new Play(); $play2 -> showNum(); echo '<br/>'; echo '这是你第' . Play::$num .'次玩LOL';
上述實例中,我們先定義了靜態變數$num,然後再類別中宣告一個方法,在方法當中呼叫了靜態變量,呼叫的方法可以在實例中看到,接著是給靜態變數加1.依序實例化類別的對象,再呼叫方法。接下來就是我們上面說的:在物件被銷毀後,仍然保存被修改的靜態數據,以便下次繼續使用。
注意事項:
靜態方法很好用,不用實例化對象,當類別第一次載入的時候就已經給了靜態成員空間。但是什麼東西都是不能濫用的。因為一旦靜態成員聲明的過多,空間一直被佔用著,那麼會影響系統的運行速度和功能,所以切記:東西雖好,可不能貪多哦!
以上是php物件導向之靜態方法使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!