日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 自动加载

發(fā)布時間:2024/8/23 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 自动加载 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

回顧

開始的時候, 如果想在一個php文件中使用其它文件的類或方法, 需要通過include/require方法將文件包含進來. 這種方法的缺點也很明顯:

  • 如果需要引入很多文件, 就需要很多的include語句, 不僅不美觀, 而且也難免會又遺漏
  • 如果多個文件中定義了相同名稱的常量, 會導致拋出重復定義的警告
  • autoload

    為了解決這個問題, 在PHP5中引入了自動加載的概念, 通過 __autoload 函數(shù)來實現(xiàn), 如下:

    function __autoload($classname){// 完成 指定名稱類的加載任務include_once($classname.'.php') }

    將這個函數(shù)定義在文件中, 當遇到未引入的類時, 會調用此函數(shù)進行引入, 看起來貌似很好, 我們只需要將此函數(shù)定義在也給PHP文件中, 以后我們的每個文件就只需要引入這一個自動加載文件就可以了, 看起來完事大吉.

    但通過使用, 這種方式也存在很多問題:

  • 因為PHP不能出現(xiàn)同名函數(shù), 所以當出現(xiàn)兩個自動加載函數(shù)時, 會報錯. 當然, 自己的項目可以保證, 但我們還是要引入第三方庫的啊.
  • 所有的函數(shù)映射都放到一個函數(shù)中, 勢必造成函數(shù)的臃腫, 同時也不利于維護
  • 很明顯, 問題就出在了, 這是一個全局函數(shù), 只能夠定義一次,

    spl_autoload

    那么如何解決這個問題呢? PHP引入了一個擴展庫, 可以定義多個自動加載函數(shù), 在查找的時候會依次調用定義好的自動加載函數(shù)進行加載, 有如下方法:

  • spl_autoload_register: 注冊自動加載函數(shù)
  • spl_autoload_unregister: 刪除已注冊的自動加載函數(shù)
  • spl_autoload_functions: 獲取所有注冊的自動加載函數(shù)
  • spl_autoload_call: 依次調用所有注冊的自動加載函數(shù)進行加載
  • spl_autoload: 自動加載函數(shù)的默認實現(xiàn), 若沒有進行注冊, 默認調用此函數(shù)
  • spl_autoload_extionsions: 注冊并返回 spl_autoload 中使用的默認文件擴展名
  • 有了它, 我們就可以定義多個自動加載函數(shù)了.

    下面是一個例子:

    test01.php

    namespace test01; class test{public static function tt(){echo 'test01';} }

    test02.php

    namespace test02; class test{public static function tt(){echo 'test02';} }

    run.php

    spl_autoload_register(function ($classname){include_once $classname.'01.php'; }); spl_autoload_register(function ($classname){include_once $classname.'02.php'; });use test01\test; test::tt();

    運行run.php, 報錯:

    Warning: include_once(test01\test01.php): failed to open stream: No such file or directory in

    打印傳入的 $classname, 發(fā)現(xiàn)是: test01\test

    也就是說, 我們使用的時候可以將命名空間與路徑相對應, 關于這個好像還有一個標準, 具體記不清了.

    這樣一對應, 有沒有感覺和java中的包有些一樣了, 反正我是覺得挺像.

    composer

    好了, 現(xiàn)在通過 composer來管理第三方庫, 它將自動加載都做好了, 只要引入他的 autoload.php 文件就可以了.

    composer提供了幾種類型的自動加載

    1.psr-4

    大概就是我們上面說的路徑和命名空間對應的形式

    2. classmap

    保存各個類與文件的映射map


    等等吧, 沒有具體研究, 不過大體是對自動加載的封裝, 很方便.

    簡單總結一下, 才疏學淺…

    總結

    以上是生活随笔為你收集整理的PHP 自动加载的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲少妇视频 | 三上悠亚 在线观看 | 中文字幕第99页 | 91中文字幕在线视频 | 欧美精产国品一二三区 | 国产伦精品一区二区三区四区视频 | 黄色一级网址 | 老子午夜影院 | 欧美做受xxxxxⅹ性视频 | 爱草在线视频 | 精品国产一区二区视频 | 中文字幕第22页 | 久久九九久精品国产免费直播 | 国产性猛交╳xxx乱大交 | 在线播放91 | 久久综合久久综合久久综合 | 成人在线播放av | 国产不卡视频在线 | 精品欧美久久久 | 修仙淫交(高h)h文 | 亚洲在线观看免费视频 | 亚洲图片综合区 | 国产传媒一级片 | 亚洲a一区 | 日本www黄| 日本免费一区二区三区最新 | 亚洲美女一级片 | 久久久久黄色片 | 无码无遮挡又大又爽又黄的视频 | 久久激情五月 | 99riav在线 | 开心六月婷婷 | 山村大伦淫第1部分阅读小说 | 91亚洲精品久久久蜜桃借种 | 哺乳喂奶一二三区乳 | 天天色天天草 | 国产视频第一页 | 欧美色图一区 | 日韩aa视频 | 中文字幕1区 | 国产精品一区二区三区四区在线观看 | 国内久久久久 | 人妻少妇偷人精品无码 | 97在线观看| 天天射夜夜爽 | 成人免费视屏 | 欧美日韩在线视频一区 | 小视频免费在线观看 | 极品国产白皙 | 亚洲综合五月天 | 女生扒开尿口让男生桶 | 神马福利视频 | 高h文在线| 亚洲系列中文字幕 | 色网在线看 | 28一20岁女人一级 | 男人的天堂一区 | 久久久久久久久久久久久久久久久久久久 | 欧美男人又粗又长又大 | 日韩视频福利 | 奇米狠狠干 | av一区不卡 | 国产成人精品无码片区在线 | 色婷婷av一区二区 | 伊人情人综合 | 在线观看欧美亚洲 | 国产成人愉拍精品久久 | 欧美一区二区最爽乱淫视频免费看 | 国产一区二区激情 | 日韩欧美久久精品 | 少妇高潮久久久 | 婷婷在线免费 | 91色拍 | 国产精品久久久久久久免费大片 | 一级绝黄| www.av网址 | 国产一区二区三区自拍 | 欧美另类z0z变态 | 人妻巨大乳hd免费看 | 亚洲综合一区二区三区 | 日韩高清在线观看一区 | 午夜天堂在线 | 欧美成人亚洲 | 亚洲免费看黄 | 精品美女久久久 | 久久日av| 女同二区| 天天拍夜夜拍 | 亚洲1级片| 永久免费的网站入口 | 成人激情小说网站 | 成年人在线视频观看 | 日本中文字幕在线观看视频 | 亚洲区av| 日本一级淫片色费放 | 91传媒入口 | 中文字幕av在线免费 | 欧美国产第一页 | 欧美日韩一卡二卡三卡 |