首頁  >  文章  >  後端開發  >  如何用 composer 造輪子

如何用 composer 造輪子

一个新手
一个新手原創
2017-09-07 10:06:291807瀏覽

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 commit
git push origin master

提交至Packagist

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

以上是如何用 composer 造輪子的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn