首頁 > 後端開發 > php教程 > php 靜態類別與非靜態類

php 靜態類別與非靜態類

WBOY
發布: 2016-07-29 09:13:23
原創
833 人瀏覽過

靜態類別:類別中含有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教程有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板