色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

PHP5魔術(shù)方法應(yīng)用淺析

  從php 5以后的版本,php中的類就可以使用魔術(shù)方法了。其規(guī)定以兩個下劃線(__)開頭的方法都保留為魔術(shù)方法,所以建議大家函數(shù)名最好不用__開頭,除非是為了重載已有的魔術(shù)方法。

  1、__get、__set

  這兩個方法是為在類和他們的父類中沒有聲明的屬性而設(shè)計的。

  ◆__get($property)當(dāng)調(diào)用一個未定義的屬性時,此方法會被觸發(fā),傳遞的參數(shù)是被訪問的屬性名。

  ◆__set($property,$value )給一個未定義的屬性賦值時,此方法會被觸發(fā),傳遞的參數(shù)是被設(shè)置的屬性名和值。

  這里的沒有聲明包括當(dāng)使用對象調(diào)用時,訪問控制為proteced,private的屬性(即沒有權(quán)限訪問的屬性)。

  2、__isset、__unset

  ◆__isset($property)當(dāng)在一個未定義的屬性上調(diào)用isset()函數(shù)時調(diào)用此方法。

  ◆__unset($property)當(dāng)在一個未定義的屬性上調(diào)用unset()函數(shù)時調(diào)用此方法。

  與__get方法和__set方法相同,這里的沒有聲明包括當(dāng)使用對象調(diào)用時,訪問控制為proteced,private的屬性(即沒有權(quán)限訪問的屬性)。

  3、__call

  __call($method,$arg_array)當(dāng)調(diào)用一個未定義的方法是調(diào)用此方法。

  這里的未定義的方法包括沒有權(quán)限訪問的方法;如果方法不存在就去父類中找這個方法,如果父類中也不存在就去調(diào)用本類的__call()方法,如果本類中不存在__call()方法就去找父類中的__call()方法。

  4、__autoload

  __autoload 函數(shù),它會在試圖使用尚未被定義的類時自動調(diào)用。通過調(diào)用此函數(shù),腳本引擎在 php 出錯失敗前有了最后一個機會加載所需的類。
  如果要定義一個全局的自動加載類,則必須用spl_autoload_register()方法將處理類注冊到php標(biāo)準(zhǔn)庫:

   1. <?php      
2. class Loader
3. {
4. static function autoload_class($class_name)
5. {
6. //尋找正確的$class_name類,并引入,沒有則拋出異常
7. }
8. }
9.
10. /**
11. * 設(shè)置對象的自動載入
12. * spl_autoload_register — Register given function as __autoload() implementation
13.
*/
14. spl_autoload_register(array(‘Loader’, ‘autoload_class’));
15. $a = new Test();
//
Test沒用require就實例化,實現(xiàn)自動加載,很多框架就用這種方法自動加載類

it知識庫PHP5魔術(shù)方法應(yīng)用淺析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 卫辉市| 乐山市| 泽普县| 冷水江市| 黄浦区| 丰都县| 扎囊县| 沙湾县| 勃利县| 吉安市| 扬州市| 准格尔旗| 繁峙县| 涡阳县| 六枝特区| 休宁县| 富民县| 南郑县| 五莲县| 买车| 上饶市| 吉隆县| 紫云| 灵台县| 富锦市| 民丰县| 石嘴山市| 时尚| 烟台市| 凌源市| 精河县| 南宁市| 集贤县| 依安县| 泾川县| 凉山| 遂宁市| 县级市| 左云县| 明光市| 宣城市|