靜態類別:類別中含有static定義的靜態屬性或方法的類別
靜態類別存取方法:
1、,靜態方法不需要實例化對象,可以透過類別名稱直接調用,操作符為雙冒號::
Car::getName();
2、外部存取公共屬性或方法:
$car->speed;$car->speedUp();
3、內部存取公共屬性與方法:
$this ->speed;$this->speedUp();
if(empty($articleclass_id)) $this->showapp(array('msg'=>'錯誤的操作'));
4、外部存取靜態屬性或方法:
Car::getName();Car::$price;
$articleclass_id = SUtil::getStr($_GET['id'], 'int');
5、內部存取靜態屬性:
self::$price;
6、繼承類別時,子類別內部呼叫父類別靜態屬性:
parent::$price;
class Controller_article extends Controller_basepage { function __construct() { parent::__construct(); }
}
7、 ,需要改方法中沒有使用$this,也就是沒有呼叫非靜態的變數/方法,當然,呼叫靜態的變數/方法沒有問題。
8、使用$object->… 和使用class::… 都有什麼區別:1. 使用$object->… ,需要執行建構函式::… 呼叫靜態方法
/變量,不需要執行建構子建立物件;
3. 使用class::… 呼叫非靜態方法/變量,也不需要執行建構子建立物件。
為什麼要有靜態類別? ? ? ? ? ? ? ? --------靜態的變數或是函數是保存的靜態記憶體中的,只有到程式結束時才會被釋放,那他是什麼時候賦值的呢
是在編譯的時候,動態類別是在程式運行的時候動態分配的。
如果類別中呼叫一次,靜態類別在編譯的時候需要多做工作,動態類別在執行的時候需要多做工作,然而php是動態語言,每一次這兩步都不掉,所以對於只運行一次的類,無所謂誰快誰慢。
但是如果一個類別在程式當中要多次呼叫就不一樣了,靜態類別是編譯的時候就賦值了,程式之後的運行都可以直接呼叫過來,而不用動態的分配記憶體了,就節約了時間,這就是為什麼靜態類比動態類別快的原因(前提是呼叫多次記得)。
以上就介紹了php 靜態類與非靜態類,包含了靜態方法,靜態屬性方面的內容,希望對PHP教程有興趣的朋友有幫助。