PHP开发生态 常用笔记

软件包生态介绍

其实PHP有三套软件包生态:PEARPECLComposer

当然PEAR可以忽略不计:作为软件包,其托管的代码基本移植成了Composer包;

作为拓展安装工具,pecl是pear的别名,直接用pecl就完事。

所以PHP软件生态主要是两套:PECL和Composer。

PECL 扩展库 官方手册

开发辅助工具

Composer使用经验总结

PHP辅助工具扩展 使用笔记

phpstan 静态检测工具

PHP-CS-Fixer 编码格式化修复工具

laravel-ide-helper laravel IDE工具

PHP

m9rco/algorithm-php php实现算法

Guzzle Http客户端

Intervention/image 最好用图片工具

所有很棒的 PHP 功能的直接总结

guanguans/notify 项目出现异常时,发送通知到钉钉等…

ezyang/htmlpurifier XSS 过滤

php-casbin 权限控制

BaconQrCode 二维码工具

vinkla/hashids 唯一hashid生成工具

ratchetphp/Ratchet websocket库 php5.4起,适合旧版本

文件压缩

https://github.com/maennchen/ZipStream-PHP zip压缩

https://github.com/alchemy-fr/Zippy 支持.zip,.tar,.tar.gz,tar.bz2,

https://github.com/wapmorgan/UnifiedArchive 支持zip,rar,7z,tar

框架选择总结

业务快速开发用laravel,性能选webman,想用协程选hyperf,异步用ReactPHP

Laravel

php-fpm模式

PHP生态最好的web开发框架,社区活跃,简单实用,具备敏捷开发特质,扩展包和解决方案多,本身集成功能特别多。start数最多。

缺点性能比较差

适合业务复杂或对性能要求不高的场景,提升性能需要单独处理。

什么是laravel

LX1 Laravel / PHP 扩展包视频教程

框架方法API文档 https://laravel.com/api/8.x/

laravel编码最佳实践

laravel编码技巧

laravel-boilerplate laravel样板项目

laravel-devinit 项目初始化工具

stechstudio/laravel-zipstream ZipStream-PHP的laravel封装

yangliuan/generator crud代码生成器

laravel-permission RBAC权限扩展包

php-casbin/laravel-authz 权限控制

laravel-enum enum类型支持

mews/purifier XSS 过滤

overtrue/laravel-lang 语言包支持

spatie/laravel-translatable 数据库多语言包

Astrotomic/laravel-translatable 数据库多语言包

jenssegers laravel-mongodb mongodb ORM 支持

barryvdh/laravel-snappy html转pdf 使用 wkhtmltopdf

barryvdh/laravel-dompdf html转pdf 使用 dompdf

simple-qrcode 二维码生成工具 在线文档

Eloquent Filter – 模型关联查询过滤

Maatwebsite/Laravel-Excel excel 导入导出

yajra/laravel-oci8 Oracle DB driver for Laravel 4|5|6|7|8 via OCI8

protonemedia/laravel-ffmpeg ffmpeg

Laravel-Phone– 全球手机号和电话验证

laravel-search 搜索扩展包 驱动支持  ElasticsearchAlgolia, and ZendSearch 

laravel-geoip 根据访问者的 IP 地址确定网站访问者的位置

laravel-queue-rabbitmq laravel rabbitmq驱动

 l5-repository Laravel 5 – Repositories to abstract the database layer

超大文件 xml/JSON/CSV 读取解析的方案 参考

阿里云文件存储 laravel-filesystem-oss

七牛云文件存储 flysystem-qiniu

Xethron/migrations-generator 数据库转换迁移文件 <= 5.5

kitloong/laravel-migrations-generator 数据库转换迁移文件 >=5.5

Laravel集成的Faker数据模拟 参考文章 Github https://fakerphp.github.io/

laravel-exception-notify 多种通道的 laravel 异常通知(钉钉群机器人、飞书群机器人、Server 酱、企业微信群机器人、息知)

laravel-modules laravel-plugin 插件机制

codestudiohq / laravel-totem laravel 定时任务管理仪表盘

性能加速组件

laravel-s laravel-swoole Laravel Octane

symfony

Symfony 是一个用于 Web 和控制台应用程序的 PHP框架和一组可重用的 PHP 组件。企业级开发框架。引领了很多php业界标准,很多框架的底层组件都使用symfony。

累计下载上亿次

ThinkPHP

基础入门框架,简单实用尤其是3.2.3版本,生态

php-casbin/think-authz 权限控制

好用的CMS框架 https://www.thinkcmf.com/

Yii

没用过不做介绍

Swoole

Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎(PHP底层扩展),为 PHP 提供协程高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务高性能WebWebSocket服务物联网实时通讯游戏微服务等,使 PHP 不再局限于传统的 Web 领域。

CLI模式常驻内存运行

API发展由swoole公司维护和决定. 社区产生分裂 国内原开发者为主swoole 国外开发者为主 openswoole

官方文档 社区

学习成本较高,从业务开发和就业角度(岗位少)来说,不如学golang。对于掌握了底层知识的人来说,学习起来很快。岗位较少。

缺点对传统php-fpm模式下的原有生态组件有不兼容情况,需要重新造轮子

通过开启一键协程功能,对php阻塞函数进行Hook,来达到兼容目的。

使用问题

学习Swoole要掌握的知识

学习Swoole 其中编程须知必须要看

退出终止和阻塞函数不能使用,静态变量非必要不能使用,会增加内存溢出风险

用户案例 大厂用的多

hyperf

简单对比测试了几个基于 swoole 的框架

Workerman (工人)

高性能php容器,网络引擎框架,性能非常高,php框架中 benchmark (基准) 排行第一 。生态相对冷门,对底层基础有要求,很多东西需要自己构建,没有开箱即用的现成轮子,需要其他第三方组件

CLI模式常驻内存运行

workerman 基础容器框架

gatewayworker 基于Workerman开发的一个项目框架 用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等

webman 基于workerman开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTTP接口或者微服务。适合中小型对性能要求高项目

以最小内核提供最大的扩展性与最强的性能。

webman仅提供最核心的功能(路由、中间件、session、自定义进程接口)。其余功能全部复用composer生态,这意味着你可以在webman里使用最熟悉的功能组件,例如在数据库方面开发者可以选择使用Laravel的illuminate/database,也可以是ThinkPHP的ThinkORM,还可以是其它组件如Medoo。在webman里集成他们是非常容易的事情。

workerman原理

ReactPHP

ReactPHP是PHP中用于事件驱动编程的底层库。它的核心是一个事件循环,在此基础上它提供了底层实用程序,例如:流抽象、异步DNS解析器、网络客户端/服务器、HTTP客户端/服务器以及进程间通信。第三方库可以使用这些组件创建异步网络客户端/服务器等。

官方文档

Yar

Yar(yet another RPC framework, 教主问我为啥都是Ya打头, 呵呵, 因为这样名字好起)是我在3个多月前, 为了解决一个实际的问题, 而开发的一个PHP扩展的, RPC框架, 和现有的RPC框架(xml-rpc, soap)不同, 这是一个轻量级的框架, 支持多种打包协议(msgpack, json, php), 并且最重要的一个特点是, 它是可并行化的..

github地址 鸟哥博客 php官方文档

Yaf

PHP framework  written in c and built as a PHP extension.

github地址 php官方文档

Yaf and Phalcon, which is faster?

Phalcon

Phalcon is an open source web framework delivered as a C extension for the PHP language providing high performance and lower resource consumption.

github地址 官网 官方文档

参考

chiraggude/awesome-laravel

吐槽一下PHP的生态