原文:羅志強的博客php
在php社區中,利用composer管理php代碼包的方式愈來愈廣泛了。html
下面記錄下如何建立本身的代碼包linux
mkdir test-pack
cd test-pack
composer init
複製代碼
初始化composer.json後,你能夠修改composer.json裏面的任何信息和依賴。git
通常composer包的結構都會在根目錄下建立兩個目錄,src和tests。而後經過修改composer.json來讓src和tests自動加載,psr-4是php社區的文件加載規範,經過加入如下配置,那麼src目錄下的文件命名空間都必須以 Diablo\xxxx開頭,其實就是一個映射關係,你能夠修改任何命名空間前綴映射到任何目錄下github
完整的composer.jsonjson
{
"name": "diablo/test-pack",
"authors": [
{
"name": "Diablo",
"email": "iluozhiqiang@gmail.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"Diablo\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
}
}
複製代碼
編輯好composer.json後,就能夠執行composer安裝命令來構建自動加載了bash
composer install
複製代碼
在src下我建立了一個Auth.php文件composer
<?php
namespace Diablo;
class Auth {
public function __construct() {
}
public function login($params) {
return [
'uid' => 1,
'name' => 'diablo',
'email' => 'iluozhiqiang@gmail.com',
];
}
}
複製代碼
而後我在tests目錄下建立一個測試文件AuthTest.php,看這個包有沒有正常加載post
<?php
require "../vendor/autoload.php";
use Diablo\Auth;
$auth = new Auth;
$user = $auth->login([]);
print_r($user);
複製代碼
執行下測試文件測試
cd tests
php AuthTest.php
Array
(
[uid] => 1
[name] => diablo
[email] => iluozhiqiang@gmail.com
)
複製代碼
有正常輸出。咱們的包構建好了
首先你應該講代碼提交到代碼倉庫,例如github或者私有的git倉庫
發佈到 packagist
好的,你如今能夠發佈你的包了,但你不會但願你的用戶每次都這樣繁瑣的指定包的來源。
你可能注意到了另外一件事,咱們並無指定
monolog/monolog
的來源。它是怎麼工做的?答案是 packagist。Packagist 是 Composer 主要的一個包信息存儲庫,它默認是啓用的。任何在 packagist 上發佈的包均可以直接被 Composer 使用。就像 monolog 它被 發佈在 packagist 上,咱們能夠直接使用它,而沒必要指定任何額外的來源信息。
若是咱們想與世界分享咱們的
hello-world
,咱們最好將它發佈到 packagist 上。這樣作是很容易的。你只須要點擊那個大大的 "Submit Package" 按鈕並註冊。接着提交你庫的來源地址,此時 packagist 就開始了抓取。一旦完成,你的包將能夠提供給任何人使用。