當今php生態環境,composer已經成爲必不可少的組件,相信大多數人已經使用過別人的composer包, 那麼如何建立一個PHP組件,發佈到packigist從而把你的創意貢獻給開源社區呢?php
在開發PHP組件以前,首先要選擇組件的廠商名和包名,已用來區分組件屬於誰,建議廠商名和包名都是用小寫字母.git
命名空間沒必要和包名一直,注意不要與其餘組件命名空間重複.github
咱們能夠簡單使用composer init 建立項目的composer.json 文件,
以後會以問答的形式提示你填寫信息, 如下 ">" 後 表示交互時輸入的信息json
> composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (<vendor>/<name>) [composertest/example]: # 廠商名與包名 > suntianxiang/cn-oauth Description []: > A library for wechat,alipay,weibo OAuth2 Client # 詳細信息 Author [stx <334965556@qq.com>, n to skip]: Minimum Stability []: > beta # 下載時傾向開發版仍是穩定版 Package Type (e.g. library, project, metapackage, composer-plugin) []: > library # 包的類型,咱們屬於library,固填library License []: MIT # 開源協議 Would you like to define your dependencies (require) interactively [yes]? > no # 是否須要定義你的依賴 Would you like to define your dev dependencies (require-dev) interactively [yes]? > no { "name": "suntianxiang/cn-oauth", "description": "A library for wechat,alipay,weibo OAuth2 Client", "type": "library", "require-dev": { "phpunit/phpunit": "^6.5" }, "license": "MIT", "authors": [ { "name": "stx", "email": "334965556@qq.com" } ], "minimum-stability": "beta", "require": { "php": "> 7.0", "guzzlehttp/guzzle": "^6.3" }, "autoload": { "psr-4": { "CnOAuth\\": "src" } } }
最後會輸出生成的composer.json文件 ()markdown
如今咱們要實現組件的具體功能了。這一步咱們要便攜組成PHP組件的類、接口和形狀。編寫什麼類以及編寫多少類徹底取決於PHP組件的做用。
組件的文件組織方式以下:composer
Root: src/ 這個目錄包含組件的源碼 (例如PHP文件) tests/ 單元測試文件 composer.json composer配置文件 README.md 組件介紹,說明,使用方法等, markdown格式 ...
若是你還不太清楚,能夠參考一些優秀的組件倉庫的組織結構ide
在把組件發佈到packagist以前,咱們還須要把組件發佈到公開的代碼倉庫中,
例如 github, 把寫好的代碼發佈到了github上 並建立一個release單元測試
如今能夠把組件提交到packagist了。
登陸packagist後, 單機網頁右上角的 「Submit Package」按鈕,而後在 「Repository URL」 中輸入完整的Git倉庫URL,再單機「Check」按鈕。組件建立完成測試
咱們能夠在Github上建立一個鉤子,每次更新組件的倉庫時通知Packgist,在倉庫中設置鉤子的方法參閱https://packagist.org/about#how-to-update-packagesui
一切都完工了!如今任何人都能使用Comopser安裝這個組件了。
composer require suntianxiang/cn-oauth