php項目中類的自動加載

語言: CN / TW / HK

主要函數:spl_autoload_register() — 註冊給定的函數作為 __autoload() 的實現

將函數註冊到SPL __autoload函數隊列中。如果該隊列中的函數尚未激活,則激活它們。

如果在你的程序中已經實現了__autoload()函數,它必須顯式註冊到__autoload()隊列中。因為spl_autoload_register()函數會將Zend Engine中的__autoload()函數取代為spl_autoload()spl_autoload_call()

如果需要多條 autoload 函數,spl_autoload_register() 滿足了此類需求。 它實際上創建了 autoload 函數的隊列,按定義時的順序逐個執行。相比之下, __autoload() 只可以定義一次。

<?php

// $class 類名
function autoloader_1($class) {
    include 'classes/' . $class . '.class.php';
}

function autoloader_2($class) {
    include 'classes/' . $class . '.class.php';
}

// 可以多次使用,但 __autoload() 函數只能使用一次。
spl_autoload_register('autoloader_1');
spl_autoload_register('autoloader_2');

// 或者,自 PHP 5.3.0 起可以使用一個匿名函數
spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.class.php';
});

php類的自動加載實例:

index.php文件

<?php

define("BASEDIR", __DIR__);
include BASEDIR . "/app/Loader.php";
// 自動加載類及文件
spl_autoload_register('\\app\\Loader::Autoload');

app目錄下的Loader.php文件

<?php

namespace app;

class Loader
{
    static function autoload( $class )
    {
        require BASEDIR . '/' . str_replace('\\', '/', $class) . '.php';
    }
}

以上內容希望幫助到大家,更多PHP大廠PDF面試文檔,PHP進階架構視頻資料,PHP精彩好文免費獲取可以關注公眾號:PHP開源社區,或者訪問:

2021金三銀四大廠面試真題集錦,必看!

騰訊一面的Redis秒殺面試題你會麼?

四年精華PHP技術文章整理合集——PHP框架篇

四年精華PHP技術文合集——微服務架構篇

四年精華PHP技術文合集——分佈式架構篇

四年精華PHP技術文合集——高併發場景篇

四年精華PHP技術文章整理合集——數據庫篇