phpmv/ubiquity

Ubiquity框架

维护者

详细信息

github.com/phpMv/ubiquity

源代码

问题

安装量: 35,453

依赖项: 10

建议者: 0

安全: 0

星级: 690

关注者: 24

分支: 60

公开问题: 13

类型:框架

2.5.2 2023-02-05 14:49 UTC

README

img

Scrutinizer Code Quality Code Coverage Documentation Status Packagist PHP Version Support Latest Stable Version License Total Downloads Monthly Downloads GitHub commits since latest release (by date) Join the chat at https://gitter.im/ubiquity-framework/community

Ubiquity,一个强大且快速的框架,用于高效设计。

主要功能

  • MVC或基于MVC的领域驱动设计
  • 依赖注入
  • PSR-4自动加载器
  • 基于注解/属性的路由器
  • 实现数据映射器的ORM
  • 支持多数据库和多数据库类型(PDO Mysql/PostgreSQL/SQLite,Mysqli,Swoole协程Mysql,Tarantool,MongoDB)
  • 多级缓存
  • REST服务器
  • Web管理界面(Webtools)
  • 脚手架(CRUD、REST、控制器、视图、认证等)
  • 控制台管理界面(Devtools)
  • 资产和主题管理(自2.1.0起,由提议 @Gildonei
  • 托管服务器:fpm/fastcgi与Apache或nginx、ngx_phpWorkermanSwooleRoadrunnerPHP-PM与ReactPHP(仅开发)
  • 支持多种模板引擎:Twig(默认)、LattePlates(自2.5.2起)

升级

如果Ubiquity Devtools已经全局安装,并且您想升级到最新稳定版本

composer global update

对于现有项目(在根目录中)

composer update

项目创建

创建项目的最简单方法是使用composer create-project命令

创建名为firstProject的项目

composer create-project phpmv/ubiquity-project firstProject

此安装向项目中添加了devtoolswebtools

  • 使用vendor/bin/Ubiquity serve运行服务器
  • webtools可在http://127.0.0.1:8090/Admin访问

Devtools安装

还可以全局安装devtools,以便在不同项目间共享使用,并获得更多项目创建选项。

  • 安装Ubiquity-devtools
composer global require phpmv/ubiquity-devtools
  • 创建项目
Ubiquity new firstProject -a
  • 启动服务器
Ubiquity serve

需要帮助吗?

Ubiquity是一个较新的项目,目前还没有一个庞大的社区。在此期间,您可以咨询

如需进一步帮助,请随时

  • 直接使用 gitter 提出您的问题
  • 如果您发现错误或可疑行为,请创建一个 问题

性能

Ubiquity 非常快,性能良好。

在 PHP 世界中

Techempower 基准测试 的各种结果有力地证明了这一点。

TechnologyEmpower 多查询测试 (*) (见 PHP 框架结果)

image

这些优秀的结果也得到了一个独立基准网站的确认: phpbenchmarks.com

在 Web 框架的世界中

Ubiquity 优化了与异步平台(WorkermanSwoole)的使用。它利用了最新的 PHP 进展(opCache 管理 和 预加载)。在这种情况下,它甚至能与用 C、C++、Rust 或 Java 编写的最快框架相媲美。

TechnologyEmpower 20 更新测试 (*) (见 所有框架结果)

image

(*) 只考虑具有框架和 ORM 的测试。

关于设计选择

Ubiquity 是在 2017 年 4 月创建的。

该项目试图简化开发过程,赋予通过他们的应用程序提供价值的高级 Web 开发人员权力。它旨在结合性能和易于处理。

这种双重目的导致了某些设计选择

从其他框架中汲取最佳实践和成功概念,但不要试图复制不属于 PHP 逻辑的东西。

一些 PHP 框架受到了 Java 世界的启发,这有助于更专业的 PHP 开发。但 Java 不是 PHP:环境和语言完全不同(尽管它们的语法类似)。Java 中的好东西不一定适合 PHP。

Ubiquity 希望保持 PHP 的本质和它最擅长的事情,例如

  • 使用 php(打包)数组,因为它们在 php(与 php7 优化)中很有效
  • 不创建用于框架核心部分的实例,而是优先使用具有静态方法类的使用

总的来说,Ubiquity 希望保持和利用 PHP 的优点。

从这个角度来看,Ubiquity 选择不遵守某些标准:例如,不创建一个实现接口的 Response 对象(见 PSR-7 HTTP 消息接口),以响应 Http 请求。

不增加做事的方式。

如果一个方法或技术是最佳的,就没有理由实现一个替代版本,尤其是如果存在降低性能或复杂化框架处理的风险。

避免多个外部依赖,这些依赖有时被加载,但从未使用过。

  • 它们阻止开发人员优化自己的代码。
  • 在某些应用程序中,依赖加载时间比运行应用程序代码的时间更昂贵。

所使用的框架必须给开发人员提供优化其应用程序的手段,而不是相反。

Ubiquity 努力永远不成为一个迷宫般系统。

一些功能的预览

Devtools 控制台程序

Ubiquity help

控制台模式使得执行所有与项目设计相关的重复性任务变得容易

  • 创建:项目、控制器、动作、路由、模型、视图
  • 检查:路由、模型、验证器
  • 脚手架(CRUD + 认证)

脚手架

使用devtools生成模型类的CRUD元素

Ubiquity crud --resource=Developers --path=/devs/

生成的路由 /devs/ 为CRUD操作提供入口点

crud index

管理界面

与控制台类似,管理界面使得可以操作框架的主要组件。

创建项目时,可以使用 -a 选项安装。

ubiquity new firstProject -a

Admin interface

图形设计

捐赠

您可以通过给我们一个星标来表达使用Ubiquity的愉悦,通过 贡献 来做得更好...

谢谢!