PHP物件導向開發之魔術函數詳解_PHP教程

來源:互聯網
上載者:User
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.對象的描述和配置...

  • 聯繫我們

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