如何用 composer 造輪子

來源:互聯網
上載者:User
composer 是 PHP 的依賴管理工具,本篇文章就來說明如何構建一個包,並提交到 Packagist ,這樣別人就可以方便地通過 composer 使用你的包了。

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

  1. 初始化 composer.json 檔案

  2. 定義命名空間及包名

  3. 實現包需要實現的功能

  4. 提交到 GitHub

  5. 在 Packagist 註冊包

初始化 composer.json 檔案

安裝好 composer 後即可在本地運行 composer init 通過互動式命令列設定 composer.json 。

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

name

此屬性定義包名,以 / 隔開,前面的為供應商名字,後面為包名,供應商代表 Packagist 網站為開發人員提供的唯一的名字,用來組織包以及防止命名衝突。所以提交時最好先訪問 https://packagist.org/packages/yourvendorname 將 url 中的 yourvendorname 替換為你想要取的名字,如果頁面沒有 404 ,說明已經被註冊了。

license

許可證。關於許可證,建議看兩篇文章,開源項目 license 介紹 、 如何選擇 license

require

安裝當前包所需的依賴。只有所有依賴被安裝當前包才會被安裝。

autoload

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

http://json-schema.org/ 上介紹了 JSON Schema 的定義以及各個語言對其各種功能的實現,有 validator 的實現,其中 JSON Schema Validator 是線上的驗證服務。其實最簡單的就是使用 composer validate composer.json 來驗證檔案是否是有錯誤。

項目結構

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

.└── geo    └── geosso        ├── LICENSE        ├── README.md        ├── composer.json        └── src            ├── Contracts            ├── Http            │   ├── Controllers            │   ├── Middleware            │   └── Requests            ├── ParamsBean            ├── Providers            ├── Support            └── config12 directories

LICENSE、README.md 及 composer.json 是運行 tree -d 之後手工添加上去的。

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

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

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

Providers 代表 Laravel 的服務容器,通過服務容器,可以註冊路由與配置,載入助手類,綁定介面與其實現。

Support 就是一些助手類,對常用的與邏輯無關的功能的封裝,config 代表應用自己的配置,通過 config 可以方便地將配置設定並使用全域函數 config() 調用。

提交至 GitHub

按照前面的步驟,一個包就有了基本的骨架,接下來就是上傳至 GitHub ,設定項目,整合持續整合服務,發布開源項目許可證。

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

git init # 初始化倉庫git remote set-url origin --push --add git@github.com:jayxhj/geosso.git # 添加遠程追蹤倉庫地址git add .git commitgit push origin master

提交至 Packagist

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.