細數PHP中的那些魔術方法

2021-09-10 19:26:46 字數 2266 閱讀 3005

<?php

/** * created by phpstorm.

* user: itboot

* date: 2019/2/13

* time: 14:36

*//**

* ----魔術方法類

* ---php中,程式在特定時間自動呼叫的方法,叫做魔術方法

* class magic

*/class magic

/*** ---在類外呼叫受保護的以及私有的成員屬性時自動執行該方法

* ---或者在呼叫不存在的屬性是自動執行該方法

* @param $name //呼叫的屬性

*/public function __get($name)

/*** ---在類外呼叫受保護的以及私有的成員屬性設定值的時候自動執行此方法

*----或者類中不存在的屬性設定值的時候

* @param $name //類外呼叫屬性的屬性名稱

* @param $value //對屬性需要設定的值

*/public function __set($name, $value)

/*** ---在類外呼叫乙個不存在的普通方法時,呼叫此方法

* @param $name //類外呼叫的方法名稱

* @param array $arguments //呼叫此方法時傳遞的引數

*/public function __call($name, array $arguments)

/***---在類外呼叫乙個不存在的靜態方法時,呼叫此方法 ,此方法也必須為靜態方法

* @param $name //類外呼叫的方法名稱

* @param $arguments //呼叫此方法時傳遞的引數

*/public static function __callstatic($name, array $arguments)

/*** -----在類外銷毀受保護的以及私有的成員屬性時呼叫此魔術方法

* @param $name // 類外銷毀屬性的屬性名稱

*/public function __unset($name)

/*** ----在類外判斷受保護的以及私有的成員屬性是否設定時呼叫此魔術方法

* @param $name // 類外判斷的屬性的屬性名稱

*/public function __isset($name)

/*** ------將類例項化為物件之後,使用clone轉殖這個類的時候呼叫此方法,可以在此設定轉殖的類的成員屬性

*/public function __clone()

/*** 在類外例項化這個物件之後,序列化這個物件之後呼叫此方法

* 作用為只序列化這個方法中返回的成員屬性

*/public function __sleep()

/*** -----將類例項化為物件的時候,echo或者print 物件呼叫此方法。!!!注意,此方法內只能return不能echo 或者 print

* @return string

*/public function __tostring()

/*** ---在類外例項化這個物件之後,反序列化的時候呼叫此方法 可以在反序列化的時候重新初始化成員屬性

*/public function __wakeup()

/*** ----將類例項化為物件的時候,列印物件時呼叫此方法, var_dump() 列印此方法返回的陣列 5.6之後才有這個魔術方法

* @return array

*/public function __debuginfo()

/*** -----__invoke 當把物件當方法呼叫的時候 首先執行這個魔術方法

*/public function __invoke($a)

/*** --執行完指令碼之後會自動呼叫此方法 析構函式

*/public function __destruct()

}/**

* 這是唯一的乙個寫在類外的魔術方法

* 在例項化乙個不存在的類的時候就會呼叫此方法

* 可以用在需要某些類但是沒有引入的情況

*/function __autoload($classname)

$magic = new magic('mwh', 22, 170);

$magic('__invoke');

echo $magic;

var_dump($magic);

$new = clone $magic;

print $new->name;

PHP中的魔術方法

php 將所有以 兩個下劃線 開頭的類方法保留為魔術方法。因此,在定義類方法時,除了下述魔術方法外,建議不要以 為字首。construct 構造方法或建構函式 具有建構函式的類會在每次建立新物件時,先呼叫此方法。因此,非常適合在使用物件之前做一些初始化操作。注意 如果子類中定義了建構函式則不會隱式呼...

PHP 中的魔術方法

1.construct 此為構造方法,是物件建立完成後第乙個被物件自動呼叫的方法,通常使用該方法完成一些物件的初始化工作。class person function say function run person1 new person 張三 男 20 person2 new person 李四 女...

PHP中的魔術方法

概述 在物件導向程式設計中,php提供了一系列的魔術方法,這些魔術方法為程式設計提供了很多便利。php中的魔術方法通常以 兩個下劃線 開始,並且不需要顯示的呼叫而是由某種特定的條件出發。這篇文章簡單總結了php中提供的魔術方法。開始之前 在總結php的魔術方法之前先來定義兩個類,以便後邊示例使用 複...