发布一个简单Composer项目,微信加密解密工具包

简介

  • 为了管理和今后使用,我们需要将一些常用的类库打包到composer 上,这样之后就比较方便了,本文介绍如何建立一个composer 的类库。
  • 代码包,我们使用 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

如果你只是想使用类库

  • composer require klib/wxtools 安装工具包,到你的项目。
  • 参考:

初始化composer

  • 首先进入刚才下载的php目录中,ls -lh 看一下目录中的文件和结构。

    image.png

  • 如果你使用的是PHP7,需要注意的情况,mcrypt_module_open、mcrypt_generic_init、mdecrypt_generic、mcrypt_generic_deinit、mcrypt_module_close 函数已经不建议使用,为了避免警告信息前面可以加上@ 符号进行屏蔽,比如 @mdecrypt_generic

  • 如果你使用的是PHP7,还需要注意这个类库写的比较早,需要里面PHP的类的构造方法为 __construct 因为PHP7语法上已经不支持同名构造方法了,如果是PHP5版本则不存在这个问题。

  • 输入 composer init 初始化composer 项目,我输入的包名称:klib/wxtools ,随便输入一个描述,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

  • 为了结构化代码,我先创建了一个新的目录结构,对于发布composer来书这个是可选的mkdir -p src/WxTools/Crypto ,然后把除了 demo.php composer.json 以外的文件全部拖动到 src/WxTools/Crypto 中,结构如下:

    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"
        }
    }
}

  • 之后执行 composer install 生成vendor 目录。
    image.png
image.png

测试composer - autoload 工作情况

  • 首先把这个类库规范化一下,首先就是改文件名,一个文件放一个class,文件名用class命名,这个很好修改,改完后大致这样:


    image.png
  • 之后给每个类新增 namespace KLib\WxTools\Crypto ; 命名空间,并且注释掉类中原来的 include_oncerequire_once 这种引用,比如 WXBizMsgCrypt
    image.png

修改demo.php

  • 这个文件解压缩后就有,之前一直没有动过,放在和composer.json 同一个目录里,我们就通过这个文件进行功能的测试。
  • 修改方法很简单,第一、引入KLib\WxTools\Crypto命名空间。第二、引入/vendor/autoload.php。第三,注释掉原来的include_once,效果如下:


    image.png

页面运行demo.php

  • 简直不要太顺利,成功了。


    image.png

发布这个类库到composer公网

  • 为了能更方便安装到其他项目中,也方便其他有需要人的使用,还需要发布这个类库到composer仓库中。

  • 需要一个公网上可以访问的git仓库,推荐使用https://github.com/ 在这里创建账号仓库,把这个项目传上去,如果不太明白什么意思请先百度git使用相关内容。

  • 我们还是在php目录,也就是composer.json 文件所在的目录下面输入 git init 进行git 初始化,它提示初始化了一个空仓库。

    image.png

  • COPY 你github 网站的源地址,比如我的是:git@github.com:kami1983/klib-wxtools.git

    image.png

  • 新增一个远程源输入命令git remote add origin git@github.com:kami1983/klib-wxtools.git (注意相对应的git地址需要替换成你自己的不可完全照抄。)

    image.png

  • 推送文件到github 上 ,输入命令:

# 建立 .gitignore 文件,忽略掉vendor 这个目录,这个目录不需要上传。
echo "**/vendor" >> .gitignore
# 这个文件也不需要上传
echo "composer.lock" >> .gitignore
# 将当前目录及子目录全部添加并提交到本地代码仓库
git add --all;git commit -m "WxTools - v1.0" 
# 将代码直接推送到远程仓库
git push origin master:master
  • 去git hub 上看看有没有文件,文件全部存在。


    image.png
  • 给当前软件版本打标签并上传到github

git tag -a "v1.0.1" -m "Wxtool initial version."
git push origin v1.0.1
image.png
  • 上推后github 上也有体现,如果没有说明上推失败。


    image.png

登录packagist

  • 登录https://packagist.org/ 如果没有账号就先创建一个。
  • 点击导航栏上面的 Submit 按钮准备提交仓库:


    image.png
  • 提交仓库 git@github.com:kami1983/klib-wxtools.git (这里请对应替换)
  • image.png
  • 提交完成后大致变成这个傻样子,下面红色的提示说这个包不会自动更新需要配置自动更新,这个和需要使用GitHook的钩子来实现。


    image.png

配置包文件的自动更新

  • 首选阅读the doc 这个很重要,提取出重要的 https://packagist.org/api/github?username=XXXX 地址信息。

    image.png

  • the docs 的内容大致如下

    image.png

  • 先获取Packagist网站上的Api Token 点击 用户名->Profile,COPY到剪切板,然后切换回github 。

image.png
  • github 上点击 settings -> webhook
    image.png
  • 如实填写,这些信息,Packagist 上都有,最后点击 Add webhook
    image.png

上推一个新版本测试一下

git tag -a "v1.0.2" -m "New  version."
git push origin v1.0.2
  • 自动同步完成WebHook,工作正常,此时浏览 packagist.org 大致如下:


    image.png

结束

  • 感谢阅读。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容