建立 PHP Composer 包並使用的操作指南
目錄
簡介
Composer 包是 PHP 原始碼檔案的集合,使用 Composer 包可以方便的使用他人已經開發好的實現特定功能的 PHP 原始碼,避免重複造輪子。並且,我們也可以建立自己的 Composer 包,給他人或自己在專案中提供便利,在實際的使用過程中,也更加容易持續完善 Composer 包。
注意:根據 Composer 官方文件的介紹,Composer 不是一個包管理器(not a package manager),而只是用做依賴管理(dependency manager)。
初始化擴充套件包
先建立一個空目錄,再在空目錄裡執行 Composer 自帶的 init
命令,自動生成 Composer 的配置檔案(composer.json)。
$ mkdir composer_test
$ cd composer_test
$ composer init
請注意:Minimum Stability
(官方說明) 要輸入 dev
,表明我們的擴充套件包最小穩定版的開發版。否則 Composer 的預設 Minimum Stability
是 stable
,擴充套件包需要打上版本號才能被 Composer 認為是穩定版(stable),前期開發除錯時簡單點處理,設定為 dev
type
欄位的官方說明。
version
欄位的官方說明。
包的環境要求和自動載入規範
環境要求通過 composer.json 裡的 require
欄位來限制。
自動載入規範通過 autoload
欄位來定義。
現在假定需要 PHP 的版本大於等於 7.0.0,並且當前包的 src 目錄下的檔案以 Yxz\ComposerTest 命令空間來載入,在 composer.json 中增加以下程式碼:
"require": { "php": ">=7.0" }, "autoload": { "psr-4": { "Yxz\\ComposerTest\\": "src" } }
如果需要引入其他的非 PSR-4 規範的原始碼檔案,可能會需要用到 autoload
下的 file
(官方說明) 欄位,每一次請求 PHP 時都是包含這些檔案。
例如要包含釘釘 SDK 的程式碼,可以在 composer.json 中增加以下程式碼:
"autoload": {
"files": [
"lib/taobao-sdk-PHP/TopSdk.php"
]
}
擴充套件包裡建立類檔案
src
目錄下新建 Calc.php 檔案,內容如下:
<?php
namespace Yxz\ComposerTest;
class Calc
{
// 計算平方值
public function square($val)
{
return $val * $val;
}
}
在專案中引入本地的擴充套件包
專案要引入本地目錄的擴充套件包,先要在 composer.json 檔案中加入以下內容:
"repositories": [
{
"type": "path",
"url": "/home/yxz/samba_share/project/composer_test"
}
]
然後在專案目錄下執行 Composer 命令:
composer require yxz/composer_test:@dev
或者
composer require yxz/composer_test:dev-master
注意:上面命令中的 yxz/composer_test
就是 Composer 擴充套件包裡 composer.json 的 name
欄位值。@dev
或 dev-master
表示引入的擴充套件包是主分支的最新版,當還未將擴充套件包提交到 Github 倉庫或者釋出到 Packagist 上時,一般這樣引入擴充套件包。
Composer 會輸出下面內容,表示已與本地的擴充套件包目錄建立了超連結(當直接修改擴充套件包目錄裡的原始碼時,專案裡可以直接看到效果):
測試專案中引入的本地擴充套件包
新建測試 PHP 檔案:
<?php
$calc = new \Yxz\ComposerTest\Calc();
echo $calc->square('12');
終端或者瀏覽器訪問這個 PHP 檔案,會看見輸出 144
:
謝謝閱讀。
參考文章:
學習開發自己的 Composer 包,並使用 GitHub 實時更新到 Packagist | Laravel China 社群
Composer 包開發居然這麼簡單 - 掘金
PHP回顧之建立自己的Composer包 - 掘金