"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其它相關文章!