热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php带参数单元测试_PHP框架QueryPHP1.0正式版,四年打磨生产可用!

【开源新闻】https:www.oschina.netnews117377queryphp-1-0-released今天是一个非常特殊的日期,在这里我们将向大家宣布一
45d1722cee8103cf132af80b6b9eb675.png

【开源新闻】https://www.oschina.net/news/117377/queryphp-1-0-released

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

5de8a3772d4bfaf400c3fd0dab010f9c.png

关于 QueryPHP

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

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

  • https://github.com/hunzhiwange/queryphp
  • https://gitee.com/dyhb/queryphp
  • https://www.queryphp.com

特性

  • 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”,用工匠精神去做一个纯粹的作品,产品文档、技术债务、计划功能和测试用例都需要任务化,将品控落实到每一个小小的步骤。

5d1e99b596b2c192baca1172063cf552.png

工匠精神

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

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

532905549e08afa1a6542ea8658dfe6b.png

Swoole 方式运行

php leevel http:server

Go RoadRunner 方式运行

/data/server/roadrunner-1.8.2-darwin-amd64/rr serve -d -v # -d = debug

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

cd /data/codes/queryphp/frontend
npm install
npm run devcd /data/codes/queryphp
php leevel serverhttp://127.0.0.1:9528/#/login

2a17ef6c9117cf744d2f93557fca9f52.png
b2592c8c04d2047ae88b309b2165911d.png
adde994c8cb7d73901e07bd99f03dc80.png
342b657e6ff5578ec79b7cfeaa6f9e92.png

联系方式

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

https://www.queryphp.com

Email: 635750557@qq.com



推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
author-avatar
爱夏花儿_915
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有