Composer 使用不同的技術和標準簡化了類的自動載入。當今最常見的自動載入標準是 PSR-4: "autoload": { "psr-4": { "App\\": "src/" } } 這將使用帶有 “App” 名稱空間首碼的 PSR-4 標准將 src 文件夾中的所有類自動載入。但是,我們如何 ...
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 的全局函數是否已存在,如果不存在則載入給定函數,否則將其忽略並使用已可用的函數。
更多學習內容請訪問:
騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)