靜態(tài)類:類中含有static定義的靜態(tài)屬性或方法的類
靜態(tài)類訪問方法:
1踱讨、靜態(tài)方法不需要實(shí)例化對象惹谐,可以通過類名直接調(diào)用持偏,操作符為雙冒號::
? ? ?Car::getName();
.2、外部訪問公共屬性或方法:
? ? ?$car->speed;$car->speedUp();
3氨肌、內(nèi)部訪問公共屬性和方法:
? ? ?$this->speed;$this->speedUp();
? ? ?if(empty($articleclass_id)) $this->showapp(array('msg'=>'錯誤的操作'));
4鸿秆、外部訪問靜態(tài)屬性或方法:
? ? ?Car::getName();Car::$price;
? ? ?$articleclass_id = SUtil::getStr($_GET['id'], 'int');
5、內(nèi)部訪問靜態(tài)屬性:
? ? ?self::$price;
6怎囚、繼承類時卿叽,子類內(nèi)部調(diào)用父類靜態(tài)屬性:
? ? ?parent::$price;
? ? class Controller_article extends Controller_basepage {
? ? ? ? ? function __construct() {
? ? ? ? ? ? ? ? parent::__construct();
? ? ? ? ? }
? ? }
7、如果是非靜態(tài)方法恳守,需要改方法中沒有使用$this考婴,即沒有調(diào)用非靜態(tài)的變量/方法,當(dāng)然催烘,調(diào)用靜態(tài)的變量/方法沒有問題沥阱。
8、使用$object->… 和使用class::… 都有什么區(qū)別:
? ? ?1).使用$object->… 伊群,需要執(zhí)行構(gòu)造函數(shù)創(chuàng)建對象考杉;
? ? ?2).使用class::… 調(diào)用靜態(tài)方法/變量,不需要執(zhí)行構(gòu)造函數(shù)創(chuàng)建對象舰始;
? ? ?3).使用class::… 調(diào)用非靜態(tài)方法/變量崇棠,也不需要執(zhí)行構(gòu)造函數(shù)創(chuàng)建對象。
為什么要有靜態(tài)類丸卷?枕稀??谜嫉?抽莱??骄恶?食铐?
--------靜態(tài)的變量或者是函數(shù)是保存的靜態(tài)內(nèi)存中的,只有到程序結(jié)束時才會被釋放僧鲁,那他是什么時候賦值的呢
是在編譯的時候虐呻,動態(tài)類是在程序運(yùn)行的時候動態(tài)分配的象泵。
如果類中調(diào)用一次,靜態(tài)類在編譯的時候需要多做工作斟叼,動態(tài)類在執(zhí)行的時候需要多做工作偶惠,然而php是動態(tài)語言,每一次這兩步都不掉,所以對于只運(yùn)行一次的類朗涩,無所謂誰快誰慢忽孽。
但是如果一個類在程序當(dāng)中要多次調(diào)用就不一樣了,靜態(tài)類是編譯的時候就賦值了谢床,程序之后的運(yùn)行都可以直接調(diào)用過來兄一,而不用動態(tài)的分配內(nèi)存了,就節(jié)約了時間识腿,這就是為什么靜態(tài)類比動態(tài)類快的原因(前提是調(diào)用多次記得)出革。