創建 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 Stabilitystable,擴展包需要打上版本號才能被 Composer 認為是穩定版(stable),前期開發調試時簡單點處理,設置為 dev,這樣引入開發中的 Composer 擴展包時不需要去管什么版本號,等開發調試過了再說。

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 字段值。@devdev-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包 - 掘金


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM