Table of Contents
什麼是 PHP Composer
PHP Composer 是一個用於 PHP 的依賴管理工具。它允許您管理專案所需的庫、框架和元件,並能自動地下載和安裝這些依賴。Composer 使用一個名為 composer.json
的配置文件來追蹤專案的依賴。
其中,最主要的優點包括:
依賴管理:
Composer 可以下載專案所需的特定版本的庫和框架。
版本控制:
確保專案中使用的所有依賴都是特定版本,避免版本衝突。
自動加載:
通過自動加載機制,方便地使用第三方代碼。
社群支持:
廣泛的社群支持和豐富的第三方函式庫。
腳本運行:
在 composer.json
文件中,您可以定義自定義腳本來執行常見的任務,比如清除快取或執行測試。
使用 Composer,您不只是獲得了便捷的依賴管理,也為您的開發流程帶來了結構性和一致性。
什麼是 PHP Autoload
PHP 自動加載(Autoload)主要是為了解決大型專案中代碼組織和管理的問題。在沒有自動加載的情況下,你需要手動使用 require
或 include
語句來加載每一個使用到的 PHP 檔案。這會導致幾個問題:
1. 代碼繁瑣:
當專案規模增大,手動管理所有的 require
或 include
變得非常繁瑣和容易出錯。
2. 維護困難:
每次新增或移動檔案,都需要更新 require
或 include
語句,這增加了維護的複雜性。
3. 效能問題:
加載過多不必要的檔案會浪費系統資源,尤其是當只有少量檔案實際被用到時。
4. 可讀性差:
過多的 require
或 include
語句會讓代碼難以閱讀和理解。
使用自動加載,你可以讓 PHP 在需要時動態地加載類別或檔案,這樣就避免了上述問題。這不僅簡化了代碼,也使得維護和擴展變得更容易。常用的自動加載實現方式有 PSR-4 和 Composer,這些工具更進一步提升了 PHP 專案的組織和管理能力。
什麼是 PSR-4
PSR-4 是由 PHP-FIG(PHP Framework Interop Group)訂定的一個自動加載規範。這個規範定義了如何自動地從文件系統加載對應於某個命名空間或類別名稱的 PHP 類別、接口或特性。
在大型或複雜的 PHP 專案中,手動引入每一個類別或檔案是不實際的。PSR-4 規範允許開發者定義一組規則,使得專案能自動地找到和加載類別,這大大提高了開發效率。
在 composer.json
文件中,您可以定義一個 PSR-4 自動加載規則。舉例來說:
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
這裡,所有在 App
命名空間下的類別都會在 src/
目錄中找到。
假設有一個類別 UserController
在 src/Controllers/UserController.php
,您可以如下使用:
namespace App\Controllers;
class UserController {
//...
}
由於已經定義了 PSR-4 的自動加載規則,當您嘗試實例化或訪問這個類別時,Composer 的自動加載器會自動找到並加載這個類別。
Composer vs PSR-4
Composer 是一個用於管理依賴和自動加載等多種任務的專案層面工具,而 PSR-4 則是一個關於如何自動加載 PHP 類別的標準。Composer 經常以 PSR-4 作為自動加載功能。
特點/工具 | Composer | PSR-4 |
---|---|---|
主要功能 | 依賴管理器 | 自動加載標準 |
自動加載 | 通常使用 PSR-4 自動加載 | 單獨專注於自動加載類別 |
應用範圍 | 專案範圍 | 類別範圍 |
社群支持 | 強大(許多庫以 Composer package 形式提供) | 較少(主要是一個標準規範) |
其他功能 | 支持自定義腳本,版本控制等 | 無 |
複雜性 | 較高(管理依賴,版本控制等) | 較低(僅僅規定如何根據命名空間和目錄結構自動加載類別) |
與其他工具的關係 | 可以使用 PSR-4 或其他自動加載標準 | 通常被 Composer 或其他自動加載器用作自動加載的規則 |
簡單來說,Composer 是用於依賴管理和安裝,而 PSR-4 主要是為了優化自動加載。兩者通常會一起使用,以達到最佳的開發效率。
如何使用 Composer
這裡我們會產生一個實際範例:
1. 安裝 Composer
在終端機中執行以下命令 (使用 macOS 範例):
brew install composer
其它 OS 系統請參考 getcomposer.org
相關教學: 你的 MacBook 沒有安裝 Homebrew 嗎?不要猶豫了快
2. 初始化 Composer 專案
在終端機中,移至您的專案資料夾,然後執行:
composer init
這會生成一個 composer.json
文件,用於記錄依賴。
3. 添加套件
要添加一個套件,您只需執行:
composer require <package-name>
4. 使用套件
在您的 PHP 檔案中,只需加上以下一行代碼即可:
require 'vendor/autoload.php';
常用的 Composer 指令教學
1. composer init
用途: 初始化一個新的 Composer 專案,並建立 composer.json
文件。
說明:
這個命令會引導您進行一系列問題,以配置新專案的 composer.json
文件。您可以指定專案名稱、描述、作者等。一旦完成,一個基本的 composer.json
文件就會在您的專案目錄中被創建。
2. composer require <package-name>
用途: 安裝指定的套件(package)到專案中。
說明:
這個命令會將指定的套件和其依賴安裝到您的專案中。同時,它也會更新 composer.json
和 composer.lock
文件,記錄下已安裝套件的資訊。
3. composer update
用途: 更新專案的依賴套件。
說明:
這個命令會查看 composer.json
文件,並更新所有列出的依賴包到最新版本。這也會更新 composer.lock
文件。
4. composer remove <package-name>
用途: 移除已安裝的套件。
說明:
這會從專案中刪除指定的套件,並更新 composer.json
和 composer.lock
文件。
5. composer dump-autoload
用途: 重新生成自動加載文件。
說明:
如果您手動更改了 composer.json
文件或者對文件結構進行了更改,這個命令會重新生成 vendor/autoload.php
文件,確保所有的類別都能被正確地自動加載。
6. composer show
用途: 顯示專案依賴的詳細資訊。
說明:
這個命令會列出所有安裝在專案中的依賴套件,以及它們的版本、描述和更多。
以上是 Composer 最常用的基本指令,對於日常的 PHP 開發來說,掌握這些基本操作是非常有幫助的。