php中自動載入類_autoload()和spl_autoload_register()實例詳解

来源:http://www.cnblogs.com/sztx/archive/2017/08/17/7383039.html
-Advertisement-
Play Games

spl_autoload_register() 函數可以註冊任意數量的自動載入器,當使用尚未被定義的類(class)和介面(interface)時自動去載入。通過註冊自動載入器,腳本引擎在 PHP 出錯失敗前有了最後一個機會載入所需的類。_autoload()自動載入類:當我們實例化一個未定義的類時... ...


一、_autoload 自動載入類:當我們實例化一個未定義的類時,就會觸此函數。到了php7.1以後版本不支持此函數好像拋棄了
  新建一個類文件名字自己隨便去:news類在auto.php文件裡面去實例news類而沒有引入該類,可以用_autoload自動載入方法類去處理.

  news.class.php文件

class news{ 
    function do_new() {
        echo 'aaa';
    }
}

  auto.php文件使用_autoload函數要定義函數體自己去定義

function __autoload( $class ) {
    $file = $class . '.class.php';
    if ( is_file($file) ) {
        require_once($file);
    }
} 
$obj = new news();
$obj->do_new();

二、spl_autoload_register()這個函數(PHP 5 >= 5.1.2)與__autoload有與曲同工之妙,通過載入自己建的函數裡面處理載入文件,但是文件變數可以自動加入參數

  動態:實例調用的文件還是news.class.php實例化,spl_autoload文件如下:

function load($class){ //定義引用文件的函數
    $file = $class . '.class.php';  
    if (is_file($file)) {  
        require_once($file);  
    }
}
spl_autoload_register( 'load' ); //調用自己定義的load函數
$obj = new news();
$obj->do_new();

  靜態:spl_autoload_register() 調用靜態方法

class n_static {
    public static function load( $class ) {
        $file = $class . '.class.php';  
        if(is_file($file)) {  
            require_once($file);  
        } 
    }
} 
spl_autoload_register(  array('n_static','load')  );
//另一種寫法:spl_autoload_register(  "n_static::load"  ); 
$obj = new news();
$obj->do_new();

上面完整代碼下載地址:http://pan.baidu.com/s/1i5DZSmp

密碼:eexc


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 二、初識C語言 編程語言有很多種,主要分為三大類,分別是機器語言、彙編語言、高級語言。電腦只能識別和理解二進位代碼,也就是0和1。想一下,用機器語言來開發,我們得記住多少用0和1兩個數字所組成的指令代碼以及其代碼涵義?顯然,這是不合理的,這樣的編程枯燥且繁瑣費力,也容易出錯。彙編語言應運而生,彙編 ...
  • os模塊調用操作系統介面的模塊 相關方法或屬性: getcwd() 獲取當前的操作目錄,等同於linux中的pwd命令。 調用:os.getcwd() chdir() 改變python腳本的工作目錄。 調用:os.chdir(path) (path以字元串形式傳入) 例如: curdir 當前目錄 ...
  • 1.Rock Paper Scissors(剪刀 石頭 布) 說明:在電腦科學中有一種特別重要的游戲,因為它本身很簡單,可以用來創建非常狡猾的人工智慧演算法來對抗人類(或彼此),預測對手的行為。 這個古老的游戲是在兩個參與者之間進行的,他們同時用他們的手勢——石頭,紙或者剪刀。如果兩人都投了相同的手 ...
  • 昨天有個大牛說我啰嗦,眼光比較細碎,看不到重點。太他爺爺的有道理了!要說看人品,還是女孩子強一些。原來記得看到一個男孩子的抱怨,說怎麼兩人剛剛開始在一起,女孩子在心裡就已經和他過完了一輩子。哥哥們,不想這麼遠行嗎?看看何潔,看看帶著倆娃跳樓的媽媽。所以現在的女孩子是很明白的,有些男孩子個子不高,其貌 ...
  • 關於Spring總結 Spring引入 傳統的基於mvc的項目框架結構:Entity / dao / service / action 簡單用戶訪問流程:/user.action Tomcat (伺服器創建Action、Service、dao 引出思考: 1. 對象創建創建能否寫死? 2. 對象創建 ...
  • 引言 記憶體管理一直是JAVA語言自豪與驕傲的資本,它讓JAVA程式員基本上可以徹底忽略與記憶體管理相關的細節,只專註於業務邏輯。不過世界上不存在十全十美的好事,在帶來了便利的同時,也因此引入了很多令人抓狂的記憶體溢出和泄露的問題。 可怕的事情還不只如此,有些使用其它語言開發的程式員,給JAVA程式員扣上 ...
  • 一springmvc項目中我新增記錄完全ok,編輯就是不行,後臺方法進不去。老是報錯HTTP ERROR 400 Bad Request。 經過查詢,說是400表示請求中的語法錯誤。 我把新增記錄的請求信息拷貝下來,把編輯的請求信息也拷貝下來,然後用notepad++比較兩個請求,終於發現原因就是i ...
  • 第一種原因: no Session 錯誤 dao層中get方法換成了load方法,或者其他原因引起. 原因分析: 真正用到代理對象的時候,代理對象沒有值,並且session的生命周期已經走完了. 解決方案:1,load()換成get(),或者立即查詢,比如列印一下. 2,延長session的存活時間 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...