天天看點

動手開發自己的第一個 composer 包

<a href="http://blog.jayxhj.com/2016/05/basic-composer-package-development/" target="_blank">原文:http://blog.jayxhj.com/2016/05/basic-composer-package-development/</a>

開發 composer 包有以下幾個步驟:

初始化 composer.json 檔案

定義命名空間及包名

實作包需要實作的功能

送出到 GitHub

在 Packagist 注冊包

安裝好 composer 後即可在本地運作 <code>composer init</code> 通過互動式指令行設定 composer.json 。

下面介紹其中的幾個屬性,以及正常的設定:

name

license

require

安裝目前包所需的依賴。隻有所有依賴被安裝目前包才會被安裝。

autoload

此配置下主要是 PSR-4 或者 PSR-0 設定,更推薦使用 PSR-4 标準。

這是我示範的設定 composer.json 的視訊

項目結構是典型的 MVC 結構,

LICENSE、README.md 及 composer.json 是運作 <code>tree -d</code> 之後手工添加上去的。

項目根目錄定義在 src 下,在 composer.json 中也有定義,這樣當 composer 加載這個包時就知道如何通過命名空間去解析檔案路徑。

Http 目錄代表請求響應,之下的 Controllers 表示合法請求的控制器,Middleware 代表請求的第一道關卡,通過中間件去攔截請求,Requests 去擷取前端請求并對請求過濾。

Contracts 代表接口定義。ParamsBean 代表應用層與底層服務溝通時的參數封裝,通過 Bean 去擷取各個參數,而不是傳遞 array 使得調用一緻,并且強制接口調用時做類型檢測,可以很大程度上統一各層之間的參數傳遞。

Providers 代表 Laravel 的服務容器,通過服務容器,可以注冊路由與配置,加載助手類,綁定接口與其實作。

Support 就是一些助手類,對常用的與邏輯無關的功能的封裝,config 代表應用自己的配置,通過 config 可以友善地将配置設定并使用全局函數 <code>config()</code> 調用。

按照前面的步驟,一個包就有了基本的骨架,接下來就是上傳至 GitHub ,配置項目,內建持續內建服務,釋出開源項目許可證。

GitHub 初始化項目時可以選擇生成 .gitignore 檔案,選擇許可證,初始化 README.md 檔案,切換至本地的項目目錄後,按如下步驟即可将目錄上傳至 GitHub:

Packagist 為 composer 預設擷取包中繼資料資訊的位址,從 Packagist 擷取到中繼資料資訊後,再從 GitHub 上拉取代碼。是以,當把你開發的包上傳至 GitHub 後還需要将其在 Packagist 注冊,這樣全世界的人都能通過 composer 去拉去你的代碼了。

送出至 Packagist 隻需三個步驟:

注冊帳号

設定 webhook 以便送出包更新後能及時地同步至 Packagist

自此,一個基本的包開發就結束了。通過 composer 來管理 PHP 的依賴,通過編寫 composer package 去擴充自己的類庫,通過引入其他的類庫來填充自己的功能,就不用重複造輪子了。