今天咱們要介紹一下如何經過Composer和Packagist向PHP社區貢獻代碼包。首先,若是你是一個PHP開發者可是還不知道什麼是Composer,請先參考了一下這篇文章http://docs.phpcomposer.com/00-intro.html,由於訪問海外鏡像源的速度較慢,也許你還須要這些方法https://pkg.phpcomposer.com/ 來獲取更多基礎信息。php
Composer是PHP的一個包依賴管理工具。你可使用第三方庫也能夠自行開發。如今我要告訴你如何建立一個Composer包而且發送到Packagist(其餘開發者能夠經過它在他們項目中使用這些發佈到Packagist上的包)。html
你能夠建立一個新項目來使用Composer。咱們建一個輸出hello world 的類 。這是一個簡單的類可是你也能夠建立複雜的項目來分享給其餘開發者。Composer一般以「vendor/package」 (廠商/包名)的方式來命名。這裏咱們爲項目命名」chenjie/hello」。git
你能夠把全部的文件都放在根目錄下,可是我特別推薦新建另外一個文件夾 「src」 以更容易理解和維護你的代碼結構。項目結構以下:github
1
2
3
4
5
|
hello $ tree
.
└──
src
└── SayHello.php
1 directories, 1 file
|
編輯hello (項目根目錄) /src/SayHello.php 文件:json
1
2
3
4
5
6
7
8
9
10
11
|
<?php
namespace Hello;
class SayHello
{
public static function world()
{
return 'Hello World!';
}
}
|
如今要在項目的根目錄裏建立一個composer.json
的文件,咱們能夠手動建立,也能夠在根目錄裏經過composer init
命令來根據提示建立:composer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
hello $ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [cl/hello]: chenjie/hello
Description []: an example of composer package.
Author [chenjie <chenjie@chenjie.info>, n to skip]:
Minimum Stability []: dev
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []: MIT
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:
{
"name": "chenjie/hello",
"description": "echo hello world"",
"license": "MIT",
"authors": [
{
"name": "chenjie",
"email": "chenjie@chenjie.info"
}
],
"minimum-stability": "dev",
"require": {}
}
Do you confirm generation [yes]?
|
根目錄下就生成了composer.json
文件,目錄結構以下:ide
1
2
3
4
5
6
|
hello $ tree
.
├──
composer.json
└──
src
└── SayHello.php
1 directories, 2 files
|
而後咱們能夠手動編輯生成的composer.json
文件,添加php的版本要求和自動加載(使用PSR-4),使用Hello命名空間,加載src
目錄下的全部文件,以下:工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
{
"name": "chenjie/hello",
"description": "echo hello world",
"license": "MIT License",
"authors": [
{
"name": "chenjie",
"email": "chenjie@chenjie.info"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-4": {
"Hello\\": "src/"
}
}
}
|
下面咱們來簡單測試下咱們的類是否工做正常。咱們在項目根目錄執行:測試
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
hello $ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
hello $ tree -L 2
.
├──
composer.json
├──
composer.lock
├──
src
│
└── SayHello.php
└──
vendor
├── autoload.php
└── composer
3 directories, 12 files
|
下面咱們在根目錄下新建一個測試文件test.phpui
1
2
3
4
|
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Hello\SayHello;
echo SayHello::world();
|
在項目根目錄下執行命令 php test.php
若是終端打印出「Hello World!」那祝賀你測試經過!
上面咱們在本地完成了編寫和測試。那麼想讓更多人使用咱們的包就須要把咱們新建的包發送到Packagist.org。首先咱們能夠先將項目發佈到Github。咱們先去Github 建立一個公有倉庫命名「hello」, 咱們在項目根目錄使用Git命令來完成發佈。
咱們先在根目錄裏建立.gitignore文件,把vendor目錄和composer.lock文件排除git在外。
1
2
3
|
hello (master) $ cat .gitignore
vendor/*
composer.lock
|
推送代碼
1
2
3
4
5
|
git init
git add .
git commit -m "First commit"
git remote add origin git@github.com:username/hello.git
git push origin master
|
固然咱們也能夠帶上tag標籤推送
1
2
|
git tag 1.0 -a
git push --tags
|
咱們就能夠在其餘項目引用chenjie這個包了,方法以下:
在新建的項目根目錄執行命令 composer require chenjie/hello
或者在新建項目根目錄新建composer.json編輯:
1
2
3
4
5
|
{
"require": {
"chenjie/hello":"dev-master" //這裏的版本根據實際須要修改
}
}
|
而後執行 composer install 便可。
到這裏咱們的第一個Composer/Packagist包就完成了,可是你能夠透過它作更多。謝謝!
參考
http://blog.jgrossi.com/2013/creating-your-first-composer-packagist-package/
http://qianlei.cc/create-your-first-composer-package/
今天咱們要介紹一下如何經過Composer和Packagist向PHP社區貢獻代碼包。首先,若是你是一個PHP開發者可是還不知道什麼是Composer,請先參考了一下這篇文章http://docs.phpcomposer.com/00-intro.html,由於訪問海外鏡像源的速度較慢,也許你還須要這些方法https://pkg.phpcomposer.com/ 來獲取更多基礎信息。
Composer是PHP的一個包依賴管理工具。你可使用第三方庫也能夠自行開發。如今我要告訴你如何建立一個Composer包而且發送到Packagist(其餘開發者能夠經過它在他們項目中使用這些發佈到Packagist上的包)。
你能夠建立一個新項目來使用Composer。咱們建一個輸出hello world 的類 。這是一個簡單的類可是你也能夠建立複雜的項目來分享給其餘開發者。Composer一般以「vendor/package」 (廠商/包名)的方式來命名。這裏咱們爲項目命名」chenjie/hello」。
你能夠把全部的文件都放在根目錄下,可是我特別推薦新建另外一個文件夾 「src」 以更容易理解和維護你的代碼結構。項目結構以下:
編輯hello (項目根目錄) /src/SayHello.php 文件:
如今要在項目的根目錄裏建立一個composer.json
的文件,咱們能夠手動建立,也能夠在根目錄裏經過composer init
命令來根據提示建立:
根目錄下就生成了composer.json
文件,目錄結構以下:
而後咱們能夠手動編輯生成的composer.json
文件,添加php的版本要求和自動加載(使用PSR-4),使用Hello命名空間,加載src
目錄下的全部文件,以下:
下面咱們來簡單測試下咱們的類是否工做正常。咱們在項目根目錄執行:
下面咱們在根目錄下新建一個測試文件test.php
在項目根目錄下執行命令 php test.php
若是終端打印出「Hello World!」那祝賀你測試經過!
上面咱們在本地完成了編寫和測試。那麼想讓更多人使用咱們的包就須要把咱們新建的包發送到Packagist.org。首先咱們能夠先將項目發佈到Github。咱們先去Github 建立一個公有倉庫命名「hello」, 咱們在項目根目錄使用Git命令來完成發佈。
咱們先在根目錄裏建立.gitignore文件,把vendor目錄和composer.lock文件排除git在外。
推送代碼
固然咱們也能夠帶上tag標籤推送
咱們就能夠在其餘項目引用chenjie這個包了,方法以下:
在新建的項目根目錄執行命令 composer require chenjie/hello
或者在新建項目根目錄新建composer.json編輯:
而後執行 composer install 便可。
到這裏咱們的第一個Composer/Packagist包就完成了,可是你能夠透過它作更多。謝謝!
參考
http://blog.jgrossi.com/2013/creating-your-first-composer-packagist-package/
http://qianlei.cc/create-your-first-composer-package/