PHP 快速導覽 - 內建方法

除了建構子 (constructor) 與解構子 (destructor) 外,類別 (class) 還有些預設的內建方法 (method) ,如果沒有實際需求並不需要改寫這些方法

方法說明
__call($name, $arguments)當呼叫不存在的方法時執行
__callStatic($name, $arguments)當呼叫不存在的 static 方法時執行
__get($name)當讀取不存在的屬性時執行
__set($name, $value)當設定不存在的屬性時執行
__isset($name)當使用不存在的屬性呼叫 isset() 或 empty() 時執行
__unset($name)當使用不存在的屬性呼叫 unset() 時執行
__sleep()在物件序列化之前執行
__wakeup()在物件序列化過程中重建物件
__toString()物件的字串形式
__invoke($x)當把物件當函數呼叫時執行
__set_state($an_array)當呼叫 var_export() 方法時執行
__clone()使用 clone 複製物件完成後執行


舉一例如下
<?php
class Demo {
    public function __call($name, $arguments) {
        echo "something wrong";
    }
}

$d = new Demo();
$d->do_something();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class17.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


此例改寫 __call()
public function __call($name, $arguments) {
    echo "something wrong";
}


然後呼叫不存在的 do_something()
$d = new Demo();
$d->do_something();


執行結果如下



中英文術語對照
建構子constructor
解構子destructor
類別class
方法method


您可以繼續參考
類別與物件


相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁


參考資料
http://www.php.net/manual/en/language.oop5.magic.php
http://www.php.net/manual/en/language.oop5.overloading.php
http://www.php.net/manual/en/language.oop5.cloning.php

沒有留言: