1. 程式人生 > >構建自己的composer包

構建自己的composer包

隨著Composer這個包管理工具越來越流行,大家在安裝一些開源專案的時候,經常會在github上看到一些知名的PHP開源專案使用composer的方式來安裝,那麼如何把自己認為比較不錯的專案也構建成composer包呢?
好,下面開始走起~~


準備階段
1.首先在github上create一個倉庫命名為miniUpload

2.回到命令列,然後把專案clone下來,並cd到miniUpload

git clone https://github.com/xuwenzhi/miniUpload.git

cd miniUpload

3.好,composer登場,執行如下命令,用composer初始化一下該目錄

composer init

然而,我在執行過程中遇到了如下錯誤,原因在於我的PHP配置中禁用了某些函式,而composer需要使用這些函式,所以報錯了。
B8E54CFD-F8AD-471D-B637-A085BA00B64A
解決方案:開啟你的php.ini,找到disable_functions那一行,將圖中的proc_open刪掉即可。

4.好,繼續composer init,還沒完事,它問你問題了

//填寫你的包名,注意這個包名要和右側中[root/mini-upload]一致,比如我填寫的是 xuwenzhi/miniupload
Package name (<vendor>/<name>) [root/mini-upload]:xuwenzhi/miniupload
//填寫你的包的描述
Description []: A simple and mini PHP upload class.
//填寫作者資訊
Author [xuwenzhi <
[email protected]
>]: xuwenzhi <[email protected]> //填寫你的包當前的穩定狀態,不填寫直接回車或者填寫可選值(stable, RC, beta, alpha, dev) Minimum Stability []: dev //包型別和協議直接回車就好了 Package Type []: License []: MIT //填寫你的包的依賴,比如最低要求PHP的哪個版本啊之類的,在這裡表示依賴PHP5.3及以上版本 Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? yes Search for a package: php Enter the version constraint to require (or leave blank to use the latest version): >=5.3 Search for a package: Would you like to define your dev dependencies (require-dev) interactively [yes]? no //這樣就生成了這樣的composer.json檔案 { "name": "xuwenzhi/miniupload", "description": "A simple and mini PHP upload class.", "license":"MIT", "require": { "php": ">=5.3" }, "authors": [ { "name": "xuwenzhi", "email": "
[email protected]
" } ], "minimum-stability": "dev" } //如果確認就可以輸入yes,並回車 Do you confirm generation [yes]? yes //最後問一下是否要將composer生成的vendor目錄新增到.gitignore,輸入yes並回車即可 Would you like the vendor directory added to your .gitignore [yes]? yes

現在會發現專案目錄下面出現了個composer.json檔案,這樣基本的composer外殼就算完成了。
EA1F50DD-0507-43FE-984F-B283D9E2C337

動手階段
雖然我們已經構建出一個composer外殼,但是它現在還是個空殼子,並沒有內涵,所以接下來的工作我們需要不斷地豐富它的內涵。

1.vim開啟composer.json,編輯成如下模樣。在這裡只是增加了autoload那一塊,也就是說我們使用psr-4的方式來將我的MiniUpload類autoload,,在這裡我定義了名稱空間為MiniUpload,並對映到的目錄為./src/目錄下。

{
    "name": "xuwenzhi/miniupload",
    "description": "A simple and mini PHP upload class.",
    "license":"MIT",
    "require": {
        "php": "5.3"
    },
    "authors": [
        {
            "name": "xuwenzhi",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev",
    "autoload": {
        "psr-4": {
            "MiniUpload\\": "src/"
        }
    } 
}

2.準備工作已經完成,但你或許會有疑惑,上面的那個vendor用來幹嘛的?
用我自己的話來講,vendor目錄其實就是一個大池子,裡面放了好多開源包供我們使用,比如當我們需要使用一個對圖片切割的包,我們通過composer install的方式將圖片切割包下載下來,就會自動歸入vendor目錄下,這樣也方便了對包的管理。

3.下面才是真正的開始

composer install

1DB58728-7E86-4DC7-A36F-735A9B1DABAA
執行完之後,發現那個神奇的vendor出現了。
開啟vendor/composer/autoload_psr4.php,看看是不是MiniUpload粗現呢?

測試階段
首先按照此圖建立目錄和檔案
4A3B45A4-A209-41A3-A284-CF8338C3CA0C

src/MyUpload.php

<?php
//下面的MiniUpload與autoload_psr4.php中一致
namespace MiniUpload;

class MyUpload {
    public function test(){
        echo "歡迎你 miniupload!!";
    }
}

test.php

<?php
require 'vendor/autoload.php';

use MiniUpload\MyUpload as MyUpload;

$miniUpload = new MyUpload();
$miniUpload->test();

測試下
85429E74-9093-49A7-95FD-0C947AE8E7F7

ok,成功了!!

釋出階段
到現在我們的包基本上可以在composer下運行了,我可以手動將我的MyUpload.php完善,你也可以將你的MyUpload.php完善。然後就可以準備釋出了。
在準備釋出之前,我們還需要辦件事,之前我們在執行composer init的時候,有一項是版本資訊,我們設定了是dev,如果你已經確保你的程式碼已經測試都通過了,那麼更改下composer.json,將dev改為stable,儲存退出,執行composer update命令。
好,把程式碼push到github上,有始有終。

注意:還沒完事,還需要把專案釋出到composer包倉庫的官方網站https://packagist.org

首先,註冊個賬號,然後選單欄有個Submit。在下面的Repository URL (Git/Svn/Hg)輸入框中輸入github連結地址
(注意後面帶有.git),再填寫一些簡簡訊息後即可完成釋出。

接下來就可以通過composer來安裝剛剛釋出的包了。比如我的
composer require xuwenzhi/miniupload dev-master

至於為什麼後面有個dev-master,是因為我們的包現在還沒有release,也就是還沒有達到可釋出要求。當在github對我們的專案進行release之後,即可去掉dev-master

但,還沒完事,當有人在github上給你提了個bug,然後你迅速的修復了bug並且push到了github,而此時packagist.org並不知道你的這個專案進行了修改,當此時使用composer安裝的話,安裝的還是之前存在bug的那個版本,So,需要解決這個問題呀~
解決方案:
1.手動方法:到你的packagist(比如我的是xuwenzhi/miniupload)的包主頁,點選下update,就能從github同步過來。
2.自動方法:也即是當你提交程式碼到github的時候,自動會更新到packagist.org,這需要在github上增加webhooks。

【注】:這裡格外提一下,composer.json檔案中,autoload裡面對映路徑一定不要寫錯(注意src前後斜線),

正確:
"psr-4": {
    "MiniUpload\\": "src/"
}

 錯誤:

"psr-4": {

        "MiniUpload\\": "/src"

}

相關推薦

Composer構建現代PHP帝國(二)——編寫自己Composer

簡介:你或許使用過多個框架,或許自己開發過很多元件,多個類庫,介面等。會不會因為切換框架而頭疼,是不是還得修改你的程式碼,可能還得在某一框架裡面重新包含這些檔案進來。現在有兩個工具可以幫助你解決這一問題,它們分別是Composer和PEAR.我們主要推薦Composer,

構建自己composer

隨著Composer這個包管理工具越來越流行,大家在安裝一些開源專案的時候,經常會在github上看到一些知名的PHP開源專案使用composer的方式來安裝,那麼如何把自己認為比較不錯的專案也構建成composer包呢? 好,下面開始走起~~ 準備階段 1.首先在gi

開發自己composer

bili .net cnblogs cti 指定 穩定 span ins welcom 1. 創建一個開發目錄 1 mkdir project 2 cd project 2. 利用composer生成一個composer.json 1 composer init

通過composer發布自己

composer 發布已經學會了composer的基礎用法,知道composer.json的作用,知道install和update命令的作用。你會使用git,並在github上有一個賬號。基本流程:1.在github上創建自己的項目,例如:group2.將項目通過git克隆到本地,創建composer.jso

利用 Composer 一步一步構建自己的 PHP 框架(一)

highlight odi yii 2 org lar getc group bsp 空間 “一個時代結束了,另一個時代開始了。” Framework Interoperability Group(框架可互用性小組),簡稱 FIG,成立於 2009 年。FIG 最初由幾位知

如何創建自己composer

load curl CI 相關 release 全局 allow pen getc composer中文網 :https://www.phpcomposer.com/ 一.前期準備: composer 安裝 Windows安裝: 1.下載安裝包,https://getcom

創建自己composer

token file 發布 ase pos use ron bsp 3.0 需求:在項目中輸入 p($arr); 將會格式化輸出 一、在GitHub上創建倉庫 1.1這個倉庫必須包含composer.json文件,內容如下. { "name"

一步一步創建自己composer

creat 參考資料 autoload 資料 ons 倉庫 () 自己 com 構建之前 申請github賬號,並建好一個repositories。 用github登錄packageList. 創建包 初始化倉庫 mkdir -p /www/plan cd /w

學習開發自己Composer ,並使用 GitHub 實時更新到 Packagist

composer是什麼 Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個專案的基礎上進行管理,在你專案的某個目錄中(例如 vendor)進行安裝。預設情況下它不會在全域性安裝任何東西。因此,這僅僅是一個依賴管理。

書寫自己第一個composer

網上搜了很多教程,很多都不太理解,簡單整理一下,終於寫出了第一個自己的composer包,本人比較菜,請大佬不要嘲笑,有啥不合理,不對的地方請各位大佬指點小弟一二1、先了解一下composer包的結構composer -自己隨便起的包含compo

如何釋出自己Composer

想把自己的程式碼能用Composer釋出,有以下步驟。 1.在專案中建立一個 composer.json 2.在github在建立一個專案 (這是我自己的建立的 https://github.co

如何在Packagist釋出自己Composer

名詞解釋:  名詞 解釋 Packagist Packagist 是Composer預設的中央倉庫, Composer Composer是PHP的一個依賴管理工具 簡要說明:想要把專案釋出到packagist上,需要先將專案釋出到githu

建立一個自己composer

Composer 是 PHP 的一個依賴管理工具。它允許你申明專案所依賴的程式碼庫,它會在你的專案中為你安裝他們。Composer 不是一個包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每個專案的基礎上進行管理,在你專案的某個目

從零建立釋出屬於自己composer

> # 原文地址:https://www.wjcms.net/archives/%E4%BB%8E%E9%9B%B6%E5%88%9B%E5%BB%BA%E5%8F%91%E5%B8%83%E5%B1%9E%E4%BA%8E%E8%87%AA%E5%B7%B1%E7%9A%84composer%E5%8C%8

構建自己的PHP框架--構建緩存組件2

oss ash oiv ria auto ports usb xlsx 自己的 Java%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E6%97%A5%E5%B8%B8%E2%80%94%E2%80%94%20%E3%80%8A%E7%BC%96

linux——構建自己的學習架構樹之滲透測試總結

步驟 滲透測試 知識樹 利用 學習 架構 知識 是我 索引 背景介紹:學習了已有將近一個月的滲透測試的工具操作了,對linux的網絡知識也初有涉略,可是隨著工具的越來越多,我開始比較迷茫與滲透學習是不是只是在工具的選擇上不斷的重復。而且我有該怎麽把這些工作變成自己的東西吸收

關於如何構建自己的只是體系

方法 快樂 p s 一點 tex 時間 開發 接下來 left 如何構建知識體系?或是說如何總結,有自己的理解,自己的知識網絡。   有這個問題的想法,是因為學習很長一段時間,覺得自己的知識還是片段化的,之間的聯系,還停留在憑感覺。   過去剛接觸編程的時候,也想

composerphp-amqplib

composer pub 基本 .com bcd demo pan pos 官方文檔 php-amqplib官方文檔 url:http://www.rabbitmq.com/tutorials/tutorial-one-php.html #測試demo: url: http

構建自己計算機的知識體系,是自己進入編程學習的第一步(寫給自己的話)

表單 網頁設計 數據結構 windows 體系 嘗試 感謝 使用 計算   我個人認為不管我去學習什麽新的東西,我肯定先去了解這個新事物的大體輪廓,需要知道的是:這個東西是圓的還是方的?是走的還是爬的?...然後嘗試尋找他的一些內在聯系。之後再選擇這個事物的一方面去深入了解

如何用maven tycho構建自己的Eclipse RCP應用

一個 ria upd als 解壓縮 www. gda htm step 在你寫了一個Eclipse插件之後,也許你就會想如何把它變成一個P2的項目或者是一個Java App讓大家可以安裝到自己的Eclipse上,dangdangdang~~ 這是你就可以利用maven-t