PHP學習筆記(3)_PHP教程

來源:互聯網
上載者:User
PHP的class與其他語言有很多不同點。PHP允許很奇葩的在靜態方法中調用執行個體方法,提供了關鍵字self和static用於訪問類自身的靜態成員。self永遠是指當前的類,而static則可能會變成指向衍生類別,這也是比較奇葩的地方,靜態成員是可以繼承和覆蓋的。

PHP還提供了一些以雙底線開頭的魔術方法(包括構造方法和一些內建的“介面”),下面即是PHP現有的魔法方法:

1、__construct($args) 和 __destruct(void)

即構造方法和析構方法,與其他語言相同,在執行個體化時調用構造方法,在回收對象時調用析構方法。析構方法可用於在執行結束後自動回收資源,像關閉一些以指標引用的資源。

2、mixed __call (string $name , array $arguments) 和 mixed __callStatic (string $name , array $arguments)

如果調用一個對象中不存在的方法或類中不存在靜態方法,就會分別調用上面兩個方法。這兩個方法使得你可以使用一些特別的動態運行機制,讓方法無中生有。個人建議盡量少用,它們會讓代碼難以維護,並且無法被IDE支援。

3、mixed __get (string $name) 和 __set (string $name , mixed $value)

跟__call一樣,它們是在調用不存在的屬性時候被執行,同樣建議少用。

4、bool __isset (string $name) 和 __unset (string $name)

當對對象不存在的屬性調用 isset() 或 empty() 時,__isset() 會被調用。__unset則是在調用unset時被調用。

5、array __sleep (void) 和 __wakeup (void)

這兩個方法會分別在序列化之前和序列化之後調用,可用於整理將序列化的對象的屬性和在序列化之後恢複狀態。

6、string __toString (void)

它告訴PHP在需要將對象轉換為字串時應該如何轉換,像 echo new MyClass();

7、mixed __invoke ()

在把一個物件變數當成函數來調用時會調用這個方法。

8、object __set_state (array $properties)

在對一個對象調用var_export()時它將被調用,並以傳回值代替對象自身,可以讓它來組織匯出變數的資料。

9、__clone()

用這個方法允許我們在複製對象的同時也為屬性進行深拷貝,類似.net中的ICloneable介面。

關於自動載入:

PHP自身沒有自動載入的機制,但是新版本中提供了spl_autoload_register這個函數來註冊一個函數,在使用一個不存在的類時被註冊的函數即被調用,開發人員需要手工在函數中實現載入機制。筆者沒深入瞭解過include的機制,如果還需要檢測一個檔案是否存在,可能會讓運行效率變低。

http://www.bkjia.com/PHPjc/748242.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/748242.htmlTechArticlePHP的class與其他語言有很多不同點。PHP允許很奇葩的在靜態方法中調用執行個體方法,提供了關鍵字self和static用於訪問類自身的靜態成員。sel...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.