簡(jiǎn)介
- 為了管理和今后使用愕鼓,我們需要將一些常用的類(lèi)庫(kù)打包到composer 上,這樣之后就比較方便了慧起,本文介紹如何建立一個(gè)composer 的類(lèi)庫(kù)菇晃。
- 代碼包,我們使用
https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Message_Encryption/Technical_Plan.html
中的事例代碼蚓挤。 - 下載地址:
https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip
-
下載后截取php 文件中的代碼:
image.png
如果你只是想使用類(lèi)庫(kù)
-
composer require klib/wxtools
安裝工具包磺送,到你的項(xiàng)目。 - 參考:
初始化composer
-
首先進(jìn)入剛才下載的php目錄中灿意,
ls -lh
看一下目錄中的文件和結(jié)構(gòu)估灿。
image.png 如果你使用的是PHP7,需要注意的情況缤剧,
mcrypt_module_open馅袁、mcrypt_generic_init、mdecrypt_generic荒辕、mcrypt_generic_deinit汗销、mcrypt_module_close
函數(shù)已經(jīng)不建議使用犹褒,為了避免警告信息前面可以加上@
符號(hào)進(jìn)行屏蔽,比如@mdecrypt_generic
弛针。如果你使用的是PHP7叠骑,還需要注意這個(gè)類(lèi)庫(kù)寫(xiě)的比較早,需要里面PHP的類(lèi)的構(gòu)造方法為
__construct
因?yàn)镻HP7語(yǔ)法上已經(jīng)不支持同名構(gòu)造方法了钦奋,如果是PHP5版本則不存在這個(gè)問(wèn)題座云。輸入
composer init
初始化composer 項(xiàng)目,我輸入的包名稱(chēng):klib/wxtools
付材,隨便輸入一個(gè)描述朦拖,type 輸入library ,建立后端composer.json
大致如下
{
"name": "klib/wxtools",
"description": "Make wxchar msg srypto lib.",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "LinHai",
"email": "mail@mail.com"
}
],
"minimum-stability": "dev",
"require": {}
}
添加composer 的 autoload
-
為了結(jié)構(gòu)化代碼厌衔,我先創(chuàng)建了一個(gè)新的目錄結(jié)構(gòu)璧帝,對(duì)于發(fā)布composer來(lái)書(shū)這個(gè)是可選的
mkdir -p src/WxTools/Crypto
,然后把除了 demo.php composer.json 以外的文件全部拖動(dòng)到src/WxTools/Crypto
中富寿,結(jié)構(gòu)如下:
image.png 修改
vim composer.json
主要是添加了 php >=7.0 的require睬隶,和autoload 的配置部分。
{
"name": "klib/wxtools",
"description": "Make wxchar msg srypto lib.",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "LinHai",
"email": "kami@cancanyou.com"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=7.0"
},
"autoload": {
"psr-4": {
"KLib\\WxTools\\": "src/WxTools"
}
}
}
- 之后執(zhí)行
composer install
生成vendor 目錄页徐。
image.png
測(cè)試composer - autoload 工作情況
-
首先把這個(gè)類(lèi)庫(kù)規(guī)范化一下苏潜,首先就是改文件名,一個(gè)文件放一個(gè)class变勇,文件名用class命名恤左,這個(gè)很好修改,改完后大致這樣:
image.png - 之后給每個(gè)類(lèi)新增
namespace KLib\WxTools\Crypto ;
命名空間搀绣,并且注釋掉類(lèi)中原來(lái)的include_once
飞袋、require_once
這種引用,比如WXBizMsgCrypt
image.png
修改demo.php
- 這個(gè)文件解壓縮后就有链患,之前一直沒(méi)有動(dòng)過(guò)巧鸭,放在和composer.json 同一個(gè)目錄里,我們就通過(guò)這個(gè)文件進(jìn)行功能的測(cè)試麻捻。
-
修改方法很簡(jiǎn)單纲仍,第一、引入KLib\WxTools\Crypto命名空間贸毕。第二巷折、引入/vendor/autoload.php。第三崖咨,注釋掉原來(lái)的include_once,效果如下:
image.png
頁(yè)面運(yùn)行demo.php
-
簡(jiǎn)直不要太順利油吭,成功了击蹲。
image.png
發(fā)布這個(gè)類(lèi)庫(kù)到composer公網(wǎng)
為了能更方便安裝到其他項(xiàng)目中署拟,也方便其他有需要人的使用,還需要發(fā)布這個(gè)類(lèi)庫(kù)到composer倉(cāng)庫(kù)中歌豺。
需要一個(gè)公網(wǎng)上可以訪(fǎng)問(wèn)的git倉(cāng)庫(kù)推穷,推薦使用
https://github.com/
在這里創(chuàng)建賬號(hào)倉(cāng)庫(kù),把這個(gè)項(xiàng)目傳上去类咧,如果不太明白什么意思請(qǐng)先百度git使用相關(guān)內(nèi)容馒铃。-
我們還是在php目錄,也就是composer.json 文件所在的目錄下面輸入
git init
進(jìn)行g(shù)it 初始化痕惋,它提示初始化了一個(gè)空倉(cāng)庫(kù)区宇。
image.png -
COPY 你github 網(wǎng)站的源地址,比如我的是:
git@github.com:kami1983/klib-wxtools.git
image.png -
新增一個(gè)遠(yuǎn)程源輸入命令
git remote add origin git@github.com:kami1983/klib-wxtools.git
(注意相對(duì)應(yīng)的git地址需要替換成你自己的不可完全照抄值戳。)
image.png 推送文件到github 上 议谷,輸入命令:
# 建立 .gitignore 文件,忽略掉vendor 這個(gè)目錄堕虹,這個(gè)目錄不需要上傳卧晓。
echo "**/vendor" >> .gitignore
# 這個(gè)文件也不需要上傳
echo "composer.lock" >> .gitignore
# 將當(dāng)前目錄及子目錄全部添加并提交到本地代碼倉(cāng)庫(kù)
git add --all;git commit -m "WxTools - v1.0"
# 將代碼直接推送到遠(yuǎn)程倉(cāng)庫(kù)
git push origin master:master
-
去git hub 上看看有沒(méi)有文件,文件全部存在赴捞。
image.png 給當(dāng)前軟件版本打標(biāo)簽并上傳到github
git tag -a "v1.0.1" -m "Wxtool initial version."
git push origin v1.0.1
-
上推后github 上也有體現(xiàn)逼裆,如果沒(méi)有說(shuō)明上推失敗。
image.png
登錄packagist
- 登錄
https://packagist.org/
如果沒(méi)有賬號(hào)就先創(chuàng)建一個(gè)赦政。 -
點(diǎn)擊導(dǎo)航欄上面的 Submit 按鈕準(zhǔn)備提交倉(cāng)庫(kù):
image.png - 提交倉(cāng)庫(kù)
git@github.com:kami1983/klib-wxtools.git
(這里請(qǐng)對(duì)應(yīng)替換) - image.png
-
提交完成后大致變成這個(gè)傻樣子胜宇,下面紅色的提示說(shuō)這個(gè)包不會(huì)自動(dòng)更新需要配置自動(dòng)更新,這個(gè)和需要使用GitHook的鉤子來(lái)實(shí)現(xiàn)昼钻。
image.png
配置包文件的自動(dòng)更新
-
首選閱讀
the doc
這個(gè)很重要掸屡,提取出重要的https://packagist.org/api/github?username=XXXX
地址信息。
image.png -
the docs
的內(nèi)容大致如下
image.png 先獲取Packagist網(wǎng)站上的
Api Token
點(diǎn)擊用戶(hù)名->Profile
然评,COPY到剪切板仅财,然后切換回github 。
- github 上點(diǎn)擊
settings
->webhook
image.png - 如實(shí)填寫(xiě)碗淌,這些信息盏求,Packagist 上都有,最后點(diǎn)擊
Add webhook
image.png
上推一個(gè)新版本測(cè)試一下
git tag -a "v1.0.2" -m "New version."
git push origin v1.0.2
-
自動(dòng)同步完成WebHook亿眠,工作正常碎罚,此時(shí)瀏覽 packagist.org 大致如下:
image.png
結(jié)束
- 感謝閱讀。