亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP的類自動加載機制的筆記

2024-09-04 11:43:41
字體:
來源:轉載
供稿:網友

在php中自動加載我們會使用到方法__autoload spl_autoload_register來實現,像我們有幾百個類時我們希望是希望使用__autoload來創建,然后直接創建類名就可以了,下面簡單的總結了一下自動加載類的用法,希望對各位有幫助.

在PHP5之前,各個PHP框架如果要實現類的自動加載,一般都是按照某種約定自己實現一個遍歷目錄,自動加載所有符合約定規則的文件的類或函數,當然,PHP5之前對面向對象的支持并不是太好,類的使用也沒有現在頻繁,在PHP5后,當加載PHP類時,如果類所在文件沒有被包含進來,或者類名出錯,Zend引擎會自動調用__autoload 函數,此函數需要用戶自己實現__autoload函數, 在PHP5.1.2版本后,可以使用spl_autoload_register函數自定義自動加載處理函數,當沒有調用此函數,默認情況下會使用SPL自定義的spl_autoload函數,看下面兩個例子:

1、__autoload示例:

  1. function __autoload($class_name) { 
  2.    echo '__autload class:'$class_name'<br />'
  3. new Demo(); 

以上的代碼在最后會輸出:__autload class:Demo。

并在此之后報錯顯示:Fatal error: Class 'Demo' not found

2、spl_autoload_register示例:

  1. function classLoader($class_name) { 
  2.     echo 'SPL load class:'$class_name'<br />'
  3. spl_autoload_register('classLoader'); 
  4. new Demo(); 

以上的代碼在最后會輸出:SPL load class:Demo。

并在此之后報錯顯示:Fatal error: Class 'Demo' not found

以上的兩個示例表明:當類不存在時(即需要的類不在類符號表),Zend引擎會將再調用一次用戶定義的函數,如__autoload或spl_autoload_register注冊的函數,如果這兩個方法同時存在,那么程序會調用哪一個呢?還是說兩個都調用?看下面一個示例,你覺得會輸出什么呢?代碼如下:

  1. function __autoload($class_name) { 
  2.     echo '__autload class:'$class_name'<br />'
  3. function classLoader($class_name) { 
  4.     echo 'SPL load class:'$class_name'<br />'
  5. spl_autoload_register('classLoader'); 
  6. new Demo(); 

__set、__tostring等類的魔法方法的常量定義在源碼級別是一起的,可是它并不是專屬于某個類的魔法方法,它是所有的類共用的自動加載魔術方法,它將作為一個全局函數存在,那么Zend引擎是如何在類沒有找到時調用這個方法的呢?

不管是使用new關鍵字創建類的實例,還是使用implement實現接口,或者繼承某個類, 所有的這些操作都有可能調用__autoload函數,這幾個操作在源碼層都有一個共同點,它們在執行的時候都需要獲取類的信息(接口在本質上也是一個類),它們在最終都會調用 zend_fetch_class(Zend/zend_execute_API.c)函數,這個函數本身沒有多少內容,關鍵是它調用了zend_lookup_class_ex(Zend/zend_execute_API.c)函數,這個函數就是類的自動加載的真相所在.

在zend_lookup_class_ex函數中,我們看到程序會首先查詢類符號表,如果存在類直接返回,如果不存在,就會執行我們所說的自動加載了,這里針對__autoload函數和spl相關的函數都做了處理,并且以第一參數和第二參數傳遞給Zend引擎的函數調用函數zend_call_function.

在zend_call_function函數中,它會判斷第二參數是否存在函數,如果存在函數則只會調用第二個參數傳遞的函數(這里指SPL注冊的函數),如果第二個函數沒有值,則執行第一個參數傳遞過來的函數(這里指用戶定義的__autoload函數),到這里,我想前面提到的兩個方法同時存在的情況應該就有答案了,這也算是一篇基于的php教程了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
92版电视剧仙鹤神针在线观看| 91久久久久久久久久久久久| 欧美裸体视频网站| 91久久国产精品91久久性色| 国产精品日韩专区| 7777kkkk成人观看| 成人黄色免费网站在线观看| 欧美日韩免费看| 久久视频免费在线播放| 亚洲最大福利视频| 亚洲国产一区二区三区在线观看| 久久99久久亚洲国产| 欧美性猛交xxxxx水多| 亚洲天堂日韩电影| 欧洲成人在线观看| 国产欧美精品一区二区三区介绍| 亚洲天堂av电影| 欧美精品第一页在线播放| 亚洲aaaaaa| 青青草成人在线| 欧美激情一区二区三区久久久| 国产精品日韩欧美大师| 欧美国产极速在线| 欧美放荡办公室videos4k| 国产日韩精品在线观看| 91产国在线观看动作片喷水| 欧美电影在线观看完整版| 国产不卡在线观看| 中文字幕综合在线| 国产精品678| 91夜夜未满十八勿入爽爽影院| 九九热这里只有精品免费看| 人体精品一二三区| 欧美特级www| 视频一区视频二区国产精品| 成人福利免费观看| 蜜臀久久99精品久久久无需会员| 国精产品一区一区三区有限在线| 欧美又大粗又爽又黄大片视频| 一区二区三区 在线观看视| 最近2019年中文视频免费在线观看| 欧美亚洲激情视频| 国产91精品在线播放| 国产欧美一区二区三区在线| 欧美大成色www永久网站婷| 久久久久一本一区二区青青蜜月| 日韩欧美在线网址| 精品久久久久久久久久久久久久| 国产精品高清免费在线观看| 亚洲国产成人91精品| 成人黄色网免费| 国产视频精品一区二区三区| 久久视频在线观看免费| 懂色av影视一区二区三区| 92福利视频午夜1000合集在线观看| 日本19禁啪啪免费观看www| 欧美电影免费在线观看| 亚洲欧洲日产国产网站| 亚洲香蕉伊综合在人在线视看| 国产欧美日韩最新| 国产精品电影久久久久电影网| 9.1国产丝袜在线观看| 搡老女人一区二区三区视频tv| 亚洲区中文字幕| 久久成人精品电影| 国产精品高精视频免费| 自拍偷拍免费精品| 综合网中文字幕| 日韩hd视频在线观看| 亚洲第一视频在线观看| 亚洲成人亚洲激情| 黄色一区二区三区| 亚洲自拍欧美色图| 狠狠色狠色综合曰曰| 国内精品一区二区三区四区| 国产亚洲欧美日韩一区二区| 亚洲色图13p| 亚洲国产精品推荐| 热久久视久久精品18亚洲精品| 久久精品99久久久久久久久| 日韩av网址在线| 欧美日韩高清区| 亚洲欧美日韩精品久久亚洲区| 亚洲已满18点击进入在线看片| 欧美另类精品xxxx孕妇| 欧美亚洲视频在线观看| 亚洲视频视频在线| 久久精品91久久久久久再现| 亚洲国产天堂久久综合网| 国产精品成久久久久三级| 日韩精品在线观| 97在线精品国自产拍中文| 中文字幕亚洲欧美| 欧美日韩一区二区免费在线观看| 136fldh精品导航福利| 久久免费国产视频| 亚洲第一视频在线观看| 91在线免费视频| 国产精品久久久久999| 91精品在线观看视频| 欧美一级黑人aaaaaaa做受| 久久久久久91香蕉国产| 在线午夜精品自拍| 亚洲精品国产suv| 国产精品大陆在线观看| 国产精品久久久久久久久久久不卡| 欧美精品999| 久久99精品国产99久久6尤物| 久久久国产一区二区| 亚洲精品视频网上网址在线观看| 色婷婷久久一区二区| 亚洲四色影视在线观看| 九九热精品视频在线播放| 68精品国产免费久久久久久婷婷| 久久精品人人做人人爽| 91精品国产高清| 欧美成人精品h版在线观看| 这里只有精品丝袜| 91免费看片网站| 中文字幕一精品亚洲无线一区| 欧美极品少妇与黑人| 日韩精品在线观看网站| 亚洲一区二区三区视频播放| 亚洲综合av影视| 日韩中文字幕国产| 国产精品视频播放| 国产综合在线视频| 亚洲成人精品久久| 97精品免费视频| 91久久国产精品91久久性色| 欧美日韩精品在线播放| 亚洲免费视频一区二区| 欧美成人黑人xx视频免费观看| 欧美精品18videosex性欧美| 久久久精品国产一区二区| 最近中文字幕mv在线一区二区三区四区| 亚洲美女在线看| 黄色成人av在线| 国产69精品99久久久久久宅男| 国产精品久久激情| 两个人的视频www国产精品| 中文字幕欧美国内| 欧美亚洲在线播放| 欧美自拍视频在线| 精品国产欧美一区二区三区成人| 亚洲精品美女久久久| 在线观看亚洲视频| 国产精品色视频| 国产性色av一区二区| 国产欧美日韩精品专区| 国产这里只有精品| 亚洲国产精品成人精品| 久久久免费精品| 欧美黄色片视频| 国产啪精品视频| 91精品久久久久久久久中文字幕| 欧美大尺度激情区在线播放| 色综合久久天天综线观看| 亚洲色图av在线| 亚洲人成欧美中文字幕| 久久国产精品久久久| 亚洲另类欧美自拍| 欧美在线观看www| 黄色成人av网|