4. 什么是 PHP 扩展包?
什么是 PHP 扩展包?
我们用于项目增强有两种方式:
PHP 原生扩展
PHP 原生扩展(PHP Native Extension),我们通常指基于 C/C++ 语言开发的对 PHP 语言的扩展,需要编译安装,比如我们最常使用的 phpredis、GD、MySQL、cURL 扩展等,这里有一个PHP 的扩展列表。
PHP 扩展包
PHP 扩展包(PHP Package)或者 PHP 包,我们通常指用 PHP 代码编写的代码包。它通常是一些特定功能的封装,比如 Intervention/image,它是基于 PHP 图像处理库 GD/Imagick 实现的图像处理功能包,具有非常强大且优雅的图片处理 API,我们可以非常便捷的基于它完成常规的图片操作,简化开发工作。
本书要讨论的就是 PHP 扩展包的开发,而不是 PHP 扩展。
常见的扩展包类型
我们在日常开发中经常用到很多扩展包,大概总结一下分为几个大类:
API SDK
为特定的服务商 API 提供 SDK,提供更方便的调用,隐藏不必要的开发细节,比如 EasyWeChat 是对微信一系列 API 的封装,overtrue/flysystem-qiniu 是对七牛 CDN API 的封装以及 EasySMS 是封装了各大国内短信平台的 SDK 等。
业务模块
封装一些通用的业务模块,比如购物车、登录注册、权限控制等。比如:
- Laravel Permission —— 角色权限管理方案
- Socialite —— 第三方登录工具
- Laravel Markdown —— Markdown 解析工具
管理工具
对一些业务工具或者项目内容提供 UI 或者命令行管理入口。比如:
- laravel-admin —— 管理员后台解决方案
- Laravel Debugbar —— 应用调试工具
- Laravel Tail —— 查看应用 Log 信息
生成器
针对重复的内容提供基于模板或者项目脚手架的生成工具。比如:
- laravel-generator —— InfyOmLabs 出品的代码生成工具
- Laravel API Documentation Generator —— API 文档生成工具
系统模块封装
时间、图像处理、PDF 生成、文字提取等。比如:
- PHPOffice —— Word、Excel 等 Office 产品的 PHP 阅读和编辑工具
- Snappy —— HTML 页面生成 PDF,基于 Webkit 渲染引擎
- DOMPdf —— HTML 页面生成 PDF,基于一些常见 PHP 原生扩展实现
- Glide —— 高品质的图像处理扩展包
设计模式实践
通过一些巧妙的封装,实现设计模式在应用中的实践。比如 Laravel 中的
- Laravel Repository —— Repository 设计模式的实现
- hyn/multi-tenant —— 多租户程序结构的解决方案
当然还有 一些其它的扩展包,不过我们常见的主要归类为以上几种,熟读一下这些优秀扩展的代码,你将获益匪浅。