1. 程式人生 > 程式設計 >開發一個自己的composer包

開發一個自己的composer包

轉載請註明文章出處:shiwenyuan.github.io/post/ck0dlg…

composer簡介

Composer 是 PHP 的一個依賴管理工具。它允許你申明專案所依賴的程式碼庫,它會在你的專案中為你安裝他們。
複製程式碼

準備工作

1.一個github賬號 2.一個packagist賬號 3.一臺安裝composer的開發機

packagist註冊連結 github註冊連結 composer檔案

釋出流程

1.首先在github上建立一個專案

2.把專案克隆到本地

3.進入專案根目錄初始化專案

➜  xdpframework git:(master) composer init

                                            
  Welcome to the Composer config generator  
                                            


This command
will guide you through creating your composer.json config. Package name (<vendor>/<name>) [shiwenyuan/xdpframework]: Description []: a xdp framework Author [北行10000 <[email protected]>,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": "shiwenyuan/xdpframework","description": "a xdp framework","license": "MIT","authors": [ { "name": "北行10000","email": "[email protected]" } ],"minimum-stability"
: "dev","require": {} } Do you confirm generation [yes]? Would you like the vendor directory added to your .gitignore [yes]? yes 複製程式碼

此時目錄下回程車一個composer.json檔案,檔案內容形如

{
    "name": "shiwenyuan/xdpframework","require": {}
}
複製程式碼

4.編寫自己的composer包

4.1 此處我建立了一個src目錄並實現了SayHello類

➜  xdpframework git:(master) ✗ tree
.
├── README.md
├── composer.json
└── src
    └── SayHello.php
複製程式碼

4.2 修改composer.json

{
    "name": "shiwenyuan/xdpframework","require": {},"autoload": {
        "psr-4": {
            "XdpFrameWork\\": "src/"
        }
    }
}
複製程式碼

4.3 自動載入src目錄

在4.2添加了src的載入執行composer install實現自動載入
➜  xdpframework git:(master) ✗ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
此時目錄中會生成一個vendor 它實現了載入方法
➜  xdpframework git:(master) ✗ tree
.
├── README.md
├── composer.json
├── src
│   └── SayHello.php
└── vendor
    ├── autoload.php
    └── composer
        ├── ClassLoader.php
        ├── LICENSE
        ├── autoload_classmap.php
        ├── autoload_namespaces.php
        ├── autoload_psr4.php
        ├── autoload_real.php
        ├── autoload_static.php
        └── installed.json
複製程式碼

4.4 測試結果

建立test.php
<?php
/**
 * Created by PhpStorm.
 * User: shiwenyuan
 * Date: 2018/8/2 [email protected]
 * Time: 下午8:56
 */
require_once __DIR__."/vendor/autoload.php";
use XdpFrameWork\SayHello;
SayHello::world();
命令列中執行
➜  xdpframework git:(master) ✗ php test.php
hello world
複製程式碼

4.5 忽略vendor、composer.json檔案

修改.gitignore增加下面兩行
/vendor/
複製程式碼

4.6提交程式碼到 github


5. Packagist配置

5.1 github關聯到Packagist

1.首先要在Packagist上登入
2.點選頂部導航條中的Summit按鈕
3.在輸入框中輸入github上的倉庫地址,如:https://github.com/shiwenyuan/xdpfarmwork
4.然後點選Check按鈕
5.Packagist會去檢測此倉庫地址的程式碼是否符合Composer的Package包的要求
6.檢測正常的話,會出現Submit按鈕,再點選一下Submit按鈕,我們的包就提交到Packagist上了
複製程式碼

5.2 配置自動同步

1.從Packagist點選個人中心點選profile獲取token然後複製
2.到github專案首頁上點選settings、點選webhooks、點選addwebhook
3.把https://packagist.org/api/bitbucket?username=USERNAME&apiToken=TOKEN 複製到Payload URL,在下方輸入密碼後儲存
複製程式碼

5.3 打tag測試


引用包

composer require shiwenyuan/xdpframework
複製程式碼

注意事項

如果下載不下來到話就換一下映象
composer config -g repo.packagist composer https://packagist.laravel-china.org
剛釋出上去可能會下載不到,沒有同步過來-- 可以等一會在試試看
複製程式碼