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技術文章整理合集——資料庫篇