PHP 框架 QueryPHP 1.0 正式版,四年打磨生产可用!

[开源新闻] www.oschina.net/news/117377/queryp...

今天是一个非常特殊的日期,在这里我们将向大家宣布一个重要的消息,完全重写的 QueryPHP 1.0 正式版发布了!

关于 QueryPHP

QueryPHP 是一款现代化的高性能 PHP 渐进式协程框架, 我们还是主要面向传统 PHP-FPM 场景,以工程师用户体验为历史使命,让每一个 PHP 应用都有一个好框架。

百分之百单元测试覆盖直面 Bug,致力于创造高品质产品 Level Level Leevel,依托 Swoole 开启未来更多可能,此刻未来逐步渐进。 我们的愿景是USE LEEVEL WITH SWOOLE DO BETTER, 让您的业务撑起更多的用户服务。

特性

  • Production-Ready (生产可用)

  • 框架理念 (值得托付的使命感,让每一个 PHP 应用都有一个好框架。)

  • 组件系统 (框架底层由独立的高内聚低耦合组件构成,可以轻松无侵入接入现有系统。)

  • 路由系统 (框架提供 MVC 自动路由并能够智能解析 Restful 请求和基于 OpenApi 3.0 规范的 swagger-php 注解路由,文档路由一步搞定。)

  • 整体解决方案 (框架提供了从缓存、Session、IOC 容器、模板引擎、Ddd ORM 等大量开箱即用的功能,提供了基于 Symfony Console 命令行工具集。)

  • 高品质 (百分之百单元测试覆盖直面 Bug,致力于创造高品质产品 Level Level Leevel。)

  • 业务协程化 (基于 Swoole 4 开发,我们的愿景是少量代码或者无修改,让你的业务撑起更多的用户服务。)

  • 百分之百单元测试覆盖(超过 3500 例测试用例保证系统可靠性和可持续维护。)

  • PHP 7 严格模式 (每一个 PHP 脚本都是 strict_types=1,严格模式可以避免很多弱类型带来潜在 BUG。)

  • PHP 7 类型提示 (尽可能为每一个方法提供确定的参数类型和返回值类型,以及类属性的类型支持。)

  • 依赖注入(完整实现,关键 MVC、命令行脚本、事件监听器全部接入 IOC 容器。)

  • 领域驱动设计(支持 UnitOfWork 事务工作单元、Repository 仓储、Specification 查询规约,Entity Getter Setter 领域实体等。)

  • 避免闭门造车 (QueryPHP 一直从 Laravel、Symfony 等框架吸收一些优秀的设计,同时我们自身也进行了大量的创新设计。)

  • 更多的特性期待你的发现…

缘起

在发布 QueryPHP 前,早在 2010 年 10 月便去尝试发布了一个开源框架 DoYouHaoBaby,但是代码早期的用户体验和质量都非常的不理想。在后来基于这个框架去做了一些应用如 DYHB.BLOG 和社区 WindsForce,事实上框架的一些 BUG 和设计都是通过这些具体的应用来验证的,后来的故事就是全部停止开发。

缘灭

2013 年 11 月开始了第一份工作上班了,慢慢地时间也少了,也很少再有多少心情去做一些业余的项目了。后来就是心里只留下些许遗憾,没有一颗再折腾的心。加上 2014 下半年想走出去,经常出去唱歌和游玩,回来的时候又玩玩 Dota,就这样过了 2 年。

重生

辗转来到 2016 年 8 月,当时每天下班回来都要玩 Dota,玩得尽兴的时候会到了深更半夜。当时非常的迷茫,一直在寻找机会,也就是在那个月开始了第一行重构 DoYouHaoBaby 的代码。慢慢地找到了些感觉,也就慢慢改掉了游戏,开始了一段全新的旅程。

Alpha.1 发布

经历了 2 年时间断断续续开发,第一个版本很快就问世了,QueryPHP 1.0.0-alpha.1 发布,《渐进式 PHP 常驻框架引擎》。第一个版本花了 2 年时间,主要是吸取以前失败的经验,希望多花点时间在设计上,避免后期反反复复推倒重构。

早年读 Vue 和 Laravel 开发历史新闻,在很早期的时候便开始编写了大量单元测试用例,于是在 2017 年中的时候接入到 Travis-ci,通过 PHPUNIT 编写大量单元测试用例来保证可靠产品交付,第一个 Alpha.1 版本的时候,整个框架的测试用例就突破了 2000 例。由于效果非常良好,这个时候便提出了一个 Slogan “百分之百单元测试覆盖直面 Bug”,用工匠精神去做一个纯粹的作品,产品文档、技术债务、计划功能和测试用例都需要任务化,将品控落实到每一个小小的步骤。

工匠精神

“工匠精神”,鼓励企业开展个性化定制、柔性化生产,培育精益求精的工匠精神,增品种、提品质、创品牌。

QueryPHP 为了更好地交付产品,按照严格的方式逐步推进,一块一块将打磨,小到文案、代码排版,大到接口用户体验,慢工出细活,最终设计得以良好呈现。避免粗制滥造的作品,致力于创造高品质产品 Level Level Leevel,品控一直贯穿整个产品开发的各个流程。

  • v1.0.0-ga 2020 年 7 月 22 日

  • v1.0.0-rc.6 2020 年 4 月 18 日

  • v1.0.0-rc.5 2020 年 2 月 8 日

  • v1.0.0-rc.4 2020 年 1 月 20 日

  • v1.0.0-rc.3 2019 年 12 月 26 日

  • v1.0.0-rc.2 2019 年 11 月 24 日

  • v1.0.0-rc.1 2019 年 11 月 6 日

  • v1.0.0-beta.6 2019 年 10 月 16 日

  • v1.0.0-beta.5 2019 年 9 月 9 日

  • v1.0.0-beta.4 2019 年 7 月 28 日

  • v1.0.0-beta.3 2019 年 6 月 6 日

  • v1.0.0-beta.2 2019 年 5 月 20 日

  • v1.0.0-beta.1 2019 年 4 月 14 日

  • v1.0.0-alpha.3 2019 年 3 月 13 日

  • v1.0.0-alpha.2 2018 年 12 月 12 日

  • v1.0.0-alpha.1 2018 年 11 月 8 日

  • First line of code 2016 年 8 月

关于性能与场景

我们还是主要面向传统 PHP-FPM 场景,这是我们整个产品的核心,我们的 99% 的组件并不依赖 Swoole。很多时候,这已经够了,比我们想象中的更加强大。

依托 Swoole 开启未来更多可能,整个框架可以运行于 Swoole 服务中,目前开启一键协程化不可关闭。目前支持了 HTTP 和 WebSocket,可以满足你的一些开发需求,并且也是我们的未来的一个重点支持方向。支持了 MySQL 和 Redis 连接池,可以更好地使用。

相对于 Swoole 来说,我特别想推荐的是 Go RoadRunner 来运行你的 PHP 应用。Golang 接受 PSR-7 请求,负责管理运行于 CLI 模式 的 PHP 常驻进程,避免框架化带来的性能开销。该公司是一家以 PHP 与 Golang 的为主语言的公司,据他们新闻说,在实际项目中能带来 15 倍的提升,兼容性好很强大,目前 QueryPHP 已经支持,未来将会更好地像这个方向完善。

我自己也在搞一些 Golang,Rust 方向,可以选择这些其它语言来提升性能与扩展场景。

开发路线

打造出面向企业级的产品,尽可能少的破坏性更新,为企业开发舔砖加瓦。未来主要优化用户体验,编写更多边界测试,以求提升产品的可靠性。

安装

为了简化入门,我们开发了一个基于 IView-UI 通用后台权限系统,可以在传统 PHP-FPM,Swoole 和 RoadRunner 3 中模式下面运行。

composer create-project hunzhiwange/queryphp myapp
php leevel server <Visite http://127.0.0.1:9527/>

Swoole 方式运行

php leevel http:server <Visite http://127.0.0.1:9527/>

Go RoadRunner 方式运行

/data/server/roadrunner-1.8.2-darwin-amd64/rr serve -d -v # -d = debug <Visite http://127.0.0.1:9527/>

运行基于 IViewUI 的通用权限系统

cd /data/codes/queryphp/frontend
npm install
npm run dev

cd /data/codes/queryphp
php leevel server
127.0.0.1:9528/#/login

联系方式

如果你觉得不错,可以关注一下项目,谢谢。

www.queryphp.com

Email: 635750557@qq.com

本帖已被设为精华帖!
本帖由系统于 7个月前 自动加精
xiaoniuge
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 16

做出这样框架的都是大佬

7个月前 评论
xiaoniuge

@win :joy: 3q

7个月前 评论
xiaoniuge

@echoyl 还没有达到级别。菜鸟一个额

7个月前 评论

大佬,想问个问题啊? 做出这种框架到底需要什么知识储备啊。

7个月前 评论
xiaoniuge

@wwwj 用熟了了某个框架,并且看过源代码,了解一些框架的优缺点,知道怎么去组织代码就可以了。然后就是做一个简版本,不断完善。

7个月前 评论
wjim 7个月前

👍,加油!

7个月前 评论

非杠,,,怎样才能叫生产可用,,,

7个月前 评论
xiaoniuge (楼主) 7个月前

加油!工匠精神

7个月前 评论
xiaoniuge (楼主) 7个月前

关注了很久 确实是工匠精神!

7个月前 评论
xiaoniuge (楼主) 7个月前

我说说看完这文章后的感受,不爱听可以忽略 1.语句读起来不通顺,很别扭. 2.浓浓的山寨感.Level Level Leevel、USE LEEVEL WITH SWOOLE DO BETTER、 DoYouHaoBaby 都什么东东

7个月前 评论
xiaoniuge (楼主) 7个月前

大佬加油!

7个月前 评论
xiaoniuge (楼主) 7个月前

送你个 star

7个月前 评论
xiaoniuge (楼主) 7个月前

厉害,遇到大佬了

7个月前 评论
xiaoniuge (楼主) 7个月前

疯狂点赞 :+1: :+1: :+1:

6个月前 评论

这是花了大精力的呀,看文档就知道,希望有更多开发者加入

6个月前 评论
xiaoniuge (楼主) 6个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!