Note:類(Class)

來源:互聯網
上載者:User


靜態成員,可以看作是屬於整個類而不是類的某個執行個體,只保留一個變數值,而這個變數值對所有執行個體都有效,也就是說,所有執行個體共用這個變數

$this只表示當前執行個體,self::表示類本身,在類之外的代碼中不能使用self::,且self::不能標識自己在繼承樹階層中的位置。也就是說,在擴充類中使用self::範圍時,self::可以調用基類中聲明的方法,但它調用的總是已經在擴充類中重寫的方法。與$this不同的是,在使用靜態變數時,必須在範圍限定符後面加上$符號。

在擴充類中,在基類方法被重寫的情況下,使用parent範圍調用定義在基類中的方法。靜態成員可以只屬於父類。如果在子類和父類中同事聲明了某個成員,可以使用parent:;在子類中訪問父類中的變數。在某些情況下,父類的靜態成員和子類的靜態成員儲存不同的值。
可以在::操作符左邊寫上類的名稱來靜態訪問某個成員,這樣避免建立類的執行個體。不僅省略執行個體化類的代碼,而且還會更搞笑,因為類的每個執行個體都會調用一小部分的系統資源。


在使用::操作符訪問成員變數的時候,需要注意對$符號的使用。因為PHP當前不支援動態靜態變數使用,也就是說不支援可變的靜態變數。在使用$this->$var時,被訪問的成員是包含在$var中的變數的值,而不用$符號訪問某個變數實際上尋找類的某個常量,而常量是不能通過$this來訪問的。
PHP6提出的static::範圍使我們不再需要使用self::和parent::。當希望指向最終的實現功能的類時,可以使用static::,這個限定符會在代碼執行之前計算出繼承階層上最後那個類的成員,這一過程被稱為延遲綁定,它使我們可以在子類中重寫某個靜態變數,並且也可以從某個在父類中聲明的函數中範文這個最終還曾元。

靜態方法與非靜態方法間的一個重要區別:在調用靜態方法時,不再需要擁有類的執行個體。


靜態方法與非靜態方法的使用原則:如果某個方法中不包含$this變數,就應該使用靜態方法;如果不需要類的執行個體,可能還應該使用靜態類來避免去執行個體化類的工作,靜態方法中不能使用$this變數,因為靜態方法不屬於某個特定的執行個體。

instanceof可以確定一個對象時類的執行個體、類的子類、還是實現了某個介面,並進行相應的操作

類輔助函數

boolean class_exists(string class_name)string get_class(object object)                                 //確定對象的上下文array get_class_methods(mixed class_name)array get_class_vars(string class_name)                         //定義的欄位array get_declared_classes(void)                              //當前執行指令碼中定義的所有類名array get_object_vars(object object)string get_parent_class(mixed object)boolean interface_exists(string interface_name[, boolean autoload])boolean is_subclass_of(object object, string class_name)boolean method_exists(object object, string method_name)



__autoload函數,當引用未在指令碼中定義的類時會自動調用個函數

newObject = clone oldObject;
__clone()方法用來調整對象的複製行為,在程式碼複製品操作期間執行。

不支援方法重載、操作符重載、多重繼承

以上就介紹了Note:類(Class),包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.