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