什么是 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 等。
业务模块
封装一些通用的业务模块,比如购物车、登录注册、权限控制等。比如:
管理工具
对一些业务工具或者项目内容提供 UI 或者命令行管理入口。比如:
生成器
针对重复的内容提供基于模板或者项目脚手架的生成工具。比如:
系统模块封装
时间、图像处理、PDF 生成、文字提取等。比如:
PHPOffice —— Word、Excel 等 Office 产品的 PHP 阅读和编辑工具
Snappy —— HTML 页面生成 PDF,基于 Webkit 渲染引擎
DOMPdf —— HTML 页面生成 PDF,基于一些常见 PHP 原生扩展实现
Glide —— 高品质的图像处理扩展包
设计模式实践
通过一些巧妙的封装,实现设计模式在应用中的实践。比如 Laravel 中的
Laravel Repository —— Repository 设计模式的实现
当然还有 一些其它的扩展包,不过我们常见的主要归类为以上几种,熟读一下这些优秀扩展的代码,你将获益匪浅。