php中魔術函數包括有tostring、call、clone、autoload幾個常用的函數,希望此教程對各位朋友會有所協助。
物件導向開發總結
1.對象的描述和配置。(可以理解為對對象的輸出文字描述)
2.對象方法的一場處理。(可以理解為出現異常時候,自訂更人性化的錯誤資訊)
3.複製對象的應用。(可以理解為在原始對象上,複製出一樣的另一個對象,注意是另一個。)
4.自動載入對象的方法。(可以理解為引用)
1.對象描述和配置
方法名:__tostring()
格式:
| 代碼如下 |
複製代碼 |
class My { function __tostring() { return "這裡寫這個類的文字描述"; //要用return,echo會出錯。 } } $p = new My(); echo $p; |
執行個體:
| 代碼如下 |
複製代碼 |
class My { function __toString() { return "這個類的作用是,保衛地球。"; } } $p = new My(); echo $p; ?> |
2.對象方法的異常處理
調用一些不存在的對象方法的異常處理,是程式正常運行。
方法名:__call($funname,$arr_value)
格式:
| 代碼如下 |
複製代碼 |
class My { function __call($n,$v) { echo "錯誤的方法名:".$n; echo "錯誤的參數:".$v; } } |
執行個體:
| 代碼如下 |
複製代碼 |
class My { function __toString() { return "這個類的作用是,保衛地球。"; } function __call ($n,$v) { echo "錯誤的方法".$n." "; echo "錯誤的值".print_r($v).""; //值是以數組方式傳遞的,所以要用print_r。 } } $p = new My(); $p->demo("第一",6); ?> |
3.對象的複製
通過複製方式可以在記憶體中產生兩個一樣的對象或升級原對象。(不是簡單的賦值,而是在記憶體中開兩塊記憶體,複製出的和被複製的是2個屬性方法一樣的不同的兩個對象)
方法名:__clone()
關鍵字:clone
格式:
| 代碼如下 |
複製代碼 |
class My { function __clone() { echo "複製時自動調用的函數"; } } $a = new My(); $b = clone $a; |
執行個體:
| 代碼如下 |
複製代碼 |
class My { public $name = "小豬"; function __toString() { return "這個類的作用是,保衛地球。"; } function __call ($n,$v) { echo "錯誤的方法".$n." "; echo "錯誤的值".print_r($v).""; //值是以數組方式傳遞的,所以要用print_r。 } } $p = new My(); $b = clone $p; echo $b->name="小豬頭"." "; //這是複製並修改後的對象,如果使用 $b = $p,那修改$b->name="小豬頭";後,再輸出$p,也會被修改。 echo $p->name; //這是原對象,它已經被$b複製了,其他都一樣,但是他們是獨立的。 ?> |
4.自動載入對象的方法
快速取得對象名稱並自動載入進當前頁面
方法名:__autoload()
格式:
| 代碼如下 |
複製代碼 |
function __autoload($class_n) { include($class_n.".php"); } $p = new MyPc(); //自動調用執行如下 $d = new demo(); //include("mypc.php") |
執行個體:
| 代碼如下 |
複製代碼 |
function __aotoload ($class_name) { include($class_name.".php"); //寫在類外部。 } $p = new class_name(); //這裡執行個體化的類名就被上面的函數變數 $class_name 替代了,非常方便。 ?> |
http://www.bkjia.com/PHPjc/632640.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632640.htmlTechArticlephp中魔術函數包括有tostring、call、clone、autoload幾個常用的函數,希望此教程對各位朋友會有所協助。 物件導向開發總結 1.對象的描述和配置...