Yii2-PHP扩展包的开发详解教程

在扩展包开发开始之前 ,先不要着急动手,先让我们一块来了解了解下面关于PHP扩展包的基础知识。

(1)什么是扩展包,他的作用是什么?有什么优点?

(2)扩展由那几部分构成?

(3)你的扩展包是解决什么问题的?考虑扩展性,后面的持续迭代,根据你的经验,应该选用什么设计模式?

(4)开发和测试;

(5)发布到 GitHub 与 Packagist 包的流程。

第一个问题:

       PHP扩展包是用于项目增强的,用于项目增强的还有一种PHP原生扩展,用c/c++编写,比如我们常常听到的GD库、MySQL扩展.。但是我们现在要说的是第一种PHP扩展包,用PHP代码编写的扩展包,他通常指的是一些特定功能的封装,能极大的简化开发工作。

第二个问题:

       一般来说,扩展包由下面几部分组成,逻辑代码、异常处理、单元测试、扩展包使用示例代码、简明的开发文档。由于这个扩展包是面向所有开发者使用的,因此简明的文档是大家友好使用的基础,单元测试也是很有必要性的,因为php 扩展包是要用于生产环境中的,致命性的错误会导致生产环境中项目中的不稳定性,重要的事情说三遍,单元测试,单元测试,单元测试。

第三个问题:

       PHP 扩展包常见的有一下几类:

API SDK:

       为特定的服务上API提供的SDK,这类扩展包在分布式项目中有很明显的优点,隐藏了不必要的开发细节,方便调用,在多个项目中使用,便于维护,能极大的降低代码的冗余。缺点,每一次SDK的更新,用到该sdk的项目都需要用composer 更新。

系统模块封装:

       办公软件的封装和阅读,例如:phpoffice/phpspreadsheet,我自己在项目用到基于yii2的电子表格导入导出功能,但是发现有一个问题,这和扩展包虽然功能丰富,但是使用复杂,对开发者使用不方便,全是英文版版的,相信对于大多开发者来说有阅读障碍,并且基于yii2导入导出这方面的扩展包少,这个使用基于该phpoffice/phpspreadsheet扩展包开发就很有必要性了。阅读其源码,对其基础扩展包phpoffice/phpspreadsheet有一个全面的了解,这时候自己再封装,再发布到https://packagist.org网站,让更多的人用就很方便了。

管理工具类:

      例如:权限管理类,查看日志的,可以开箱即用。

第四个问题(开发和测试,此处用yii2举例:)

1、生成扩展包的基础代码架构(可以使用GII、也可以用composer直接生成)。

此处借用GII,填写生成扩展包基础代码架构的必要内容,如下图所示:

2、生成的包结构默认在项目根目录/runtime/tmp-extensions文件夹下,

3.找到扩展包基础架构中的composer.json文件,由于之后在代码中要添加示例代码,因此需要和逻辑代码区分开。然而,逻辑代码的命名空间在扩展包的根目录下,因此需要修改命名空间到你逻辑代码的文件夹下,如图所示:


3、逻辑代码写在上图的src文件中,设计模式根据自己需求、精要自己选取。

4、测试,在配置文件中配置路径别名(web.php),然后在控制器里面实例化php扩展包的入口类就可以模拟开发者测试了,入下图所示:

5、在上传到github上,注意每一个完整的版本打上tag,这样每个版本之间的包都会有其特定的功能和作用(重要的事情说三遍,打上标签、标签、标签)

最后一个问题了(发布到 GitHub 与 Packagist 包的流程):

在github上注册一个自己的账号,将测试号的php扩展包上传至github上,然后用github 账号登陆https://packagist.org/

接下来,最主要的就是怎样及时的将更新至github 上的代码同步到packagist.官网上工大家下载呢,先登陆你的github进行下图设置,增加webhook:

测试成功后,之后push到github中的代码会自动同步packagist官网上,第一次github 同步packagist 有点慢,请耐心等待,之后代码的同步会越来越快。

有问题的添加qq咨询:2016835341

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值