PHP使用Composer進行註冊全域性函數

2020-07-16 10:05:55
Composer 使用不同的技術和標準簡化了類的自動載入。當今最常見的自動載入標準是 PSR-4:

"autoload": {
    "psr-4": {
        "App": "src/"
    }
}

這將使用帶有 「App」 名稱空間字首的 PSR-4 標準將 src 資料夾中的所有類自動載入。但是,我們如何自動載入不直接屬於名稱空間類的檔案、全域性幫助程式函數呢?那麼,如果你在 Composer 網站上瀏覽官方文件 , 你可以看到 「autoload」 模式支援多種標準和技術。

PSR-0 是舊的自動載入標準,已棄用,但仍支援。我們應該避免使用它。

PSR-4 是現代自動載入標準,取代了 PSR-0。它是名稱空間類的主要自動載入標準。

classmap 是用於載入沒有名稱空間或名稱空間字首的類的自動載入標準。

files 是載入檔案的載入標準。

你可能已經猜到了,files 是我們需要在不定義類的情況下載入 PHP 檔案的標準,該類僅包含 helper 方法。files 標準接受每個檔案的相對路徑陣列。通常,當你要定義全域性助手方法時,最好使用 「functions.php」 或 「helpers.php」 名稱建立一個 PHP 檔案,並將所有助手函數放入其中。

"autoload": {
    "files": [
        "src/functions.php"
    ]
}

關於如何編寫和自動載入全域性函數,有一些常見的做法。你需要記住,由於在 Composer 載入這些函數時沒有名稱空間,因此它們可能與現有功能衝突。Composer 自動載入機制始終檢查給定的函數或類是否已經存在,如果存在,Composer 會引發異常,丟擲 「cannot redeclare」。為了避免這種情況,在載入函數之前,我們可以檢查它是否可用。

functions.php

if (!function_exists('sayHello')) {
    function sayHello()
    {
        return 'Hello!';
    }
}

在此範例中,我們要求 Composer 檢查名稱為 sayHello 的全域性函數是否已存在,如果不存在則載入給定函數,否則將其忽略並使用已可用的函數。

推薦教學:《PHP教學》《Composer教學

以上就是PHP使用Composer進行註冊全域性函數的詳細內容,更多請關注TW511.COM其它相關文章!