介紹一下如何通過(guò)Composer和Packagist向PHP社區(qū)貢獻(xiàn)代碼包。首先,如果你是一個(gè)PHP開(kāi)發(fā)者但是還不知道什么是Composer,請(qǐng)先參考了一下這篇文章http://docs.phpcomposer.com/00-intro.html,因?yàn)樵L問(wèn)海外鏡像源的速度較慢,也許你還需要這些方法https://pkg.phpcomposer.com/ 來(lái)獲取更多基礎(chǔ)信息。
創(chuàng)建項(xiàng)目
新建一個(gè)文件作為我們的項(xiàng)目目錄,你可以把所有的文件都放在根目錄下,但是我特別推薦新建另一個(gè)文件夾 “src” 以更容易理解和維護(hù)你的代碼結(jié)構(gòu)。項(xiàng)目結(jié)構(gòu)如下:
project 項(xiàng)目根目錄
└──src 源代碼放在這個(gè)目錄
└──Hello.php 新建一個(gè)php文件,取名 Hello.php
- Hello.php 文件內(nèi)容如下:
<?php
namespace hello;
class Hello
{
public static function world()
{
return 'Hello World!';
}
}
使用Composer
Composer是PHP的一個(gè)包依賴(lài)管理工具。你可以使用第三方庫(kù)也可以自行開(kāi)發(fā)。
現(xiàn)在我要告訴你如何創(chuàng)建一個(gè)Composer包并且發(fā)送到Packagist,
Composer通常以“vendor/package” (廠商/包名)的方式來(lái)命名
現(xiàn)在要在項(xiàng)目的根目錄里創(chuàng)建一個(gè) composer.json 的文件,我們可以手動(dòng)創(chuàng)建,也可以在根目錄里通過(guò)composer init命令來(lái)根據(jù)提示創(chuàng)建,根目錄下就生成了composer.json文件,目錄結(jié)構(gòu)如下:
project 項(xiàng)目根目錄
└──src
└──Hello.php
└──composer.json
- 添加自動(dòng)加載
然后我們可以手動(dòng)編輯生成的composer.json文件,添加php的版本要求和自動(dòng)加載(使用PSR-4),使用hello命名空間,加載src目錄下的所有文件,composer.json文件內(nèi)容如下:
{
"name": "wumiss/hello",
"description": "echo hello world",
"license": "MIT License",
"authors": [
{
"name": "wumiss",
"email": "wumiss@wumiss.com"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-4": {
"hello\\": "src/"
}
}
}
- 執(zhí)行安裝
在根目錄打開(kāi)命令行輸入composer install最后或多生成composer.lock 和vendor文件夾
在根目錄下創(chuàng)建一個(gè)測(cè)試文件取名 test.php,代碼如下:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use hello\Hello;
echo SayHello::world();
- 在項(xiàng)目根目錄下執(zhí)行命令
php test.php
如果終端打印出“Hello World!”那祝賀你測(cè)試通過(guò)!
發(fā)布Packagist
上面我們?cè)诒镜赝瓿闪司帉?xiě)和測(cè)試。那么想讓更多人使用我們的包就需要把我們新建的包發(fā)送到Packagist.org。首先我們可以先將項(xiàng)目發(fā)布到Github。我們先去Github 創(chuàng)建一個(gè)公有倉(cāng)庫(kù)命名“hello”, 我們?cè)陧?xiàng)目根目錄使用Git命令來(lái)完成發(fā)布。
我們先在根目錄里創(chuàng)建.gitignore文件,把vendor目錄和composer.lock文件排除git在外。然后推送至github倉(cāng)庫(kù)
vendor/*
composer.lock
- 提交到Packagist
- 首先要在Packagist上注冊(cè)賬號(hào)并登錄
- 點(diǎn)擊頂部導(dǎo)航條中的Summit按鈕
- 在輸入框中輸入github上的倉(cāng)庫(kù)地址,如:https://github.com/chenjiesuper/ansible-php
- 然后點(diǎn)擊Check按鈕(Packagist會(huì)去檢測(cè)此倉(cāng)庫(kù)地址的代碼是否符合Composer的Package包的要求)
- 檢測(cè)正常的話(huà),會(huì)出現(xiàn)Submit按鈕,再點(diǎn)擊一下Submit按鈕,我們的包就提交到Packagist上了
- 以后更新代碼可以先從Packagist獲取token然后去github 配置下對(duì)應(yīng)的GitHub Service Hook實(shí)現(xiàn)代碼提交后Packagist自動(dòng)拉取更新
如何使用
我們就可以在其他項(xiàng)目引用這個(gè)包了,方法如下:
在新建的項(xiàng)目根目錄執(zhí)行命令 composer require wumiss/hello
或者在新建項(xiàng)目根目錄新建composer.json編輯:
{
"require": {
"wumiss/hello":"dev-master" //這里的版本根據(jù)實(shí)際需要修改
}
}
然后執(zhí)行 composer install 即可。