Skip to content

003 — 路线图

我们希望 Yii 3:

  • 不限制开发者选择架构。允许从“经典”MVC 到 DDD 的任何架构。
  • 基于 SOLID、GRASP 等最佳实践,并将它们教给社区。
  • 保留 Yii 2 中最好的东西。
  • 对全球 PHP 社区和基础设施更加开放。

PSR 合规性

PSR 合规性有助于可定制性、使用通用 PHP 库的能力以及实现更少的包装器。以下是我们想要实现的 PSR 列表。

PSR-3 日志记录器

实现为 不依赖于框架的独立包

PSR-4 自动加载

  • 自动加载已经很好了。
  • 记录它的工作原理。

PSR-7 HTTP 消息

  • 删除我们自己的实现。至少目前如此。
  • 框架包应仅依赖于接口。

PSR-11 容器

实现为 不依赖于框架的独立包

  • 框架包不应直接使用容器。应该能够手动实例化所有内容。
  • 完成重构。
  • 从包中删除所有框架特定的实现。移至框架。
  • 实现自动加载器回退

PSR-12 代码风格

  • 确保代码遵循它。
  • 在发布前自动修复风格。

PSR-14 事件调度器

PSR-15 HTTP 处理器

  • 将 HTTP 流程重写为 PSR-7 请求-响应 + 通过 Emitter 进行格式化响应。
  • 开箱即用地提供 SAPI Emitter。
  • 支持使用 RoadRunner 等替代的 Emitter 实现。
  • 支持中间件。
  • 将过滤器实现为中间件:
  • 重新实现路由器,支持路由组的中间件。
  • 过滤器应该是中间件。

PSR-16 简单缓存

实现为 不依赖于框架的独立包

  • 框架包应仅依赖于接口。
  • 将驱动程序拆分为包。
  • 清理代码。

PSR-17 HTTP 工厂

  • 使用 PSR 工厂。

PSR-18 HTTP 客户端

  • 删除我们自己的实现。至少目前如此。
  • 框架包应仅依赖于接口。

更严格的类型

  • 确保在所有地方都使用类型提示。
  • 确保类型尽可能明确。尽可能避免变化的类型。

单一应用程序模板

路由器

实现为 不依赖于框架的独立包

  • 用于配置的 DSL。
  • 能够路由到任何可调用对象。
  • 命名路由。
  • 支持中间件的路由组。

所有类/包的最佳实践和 SOLID 合规性

  • 确保接口遵循“接口隔离”原则。
  • 不要使用公共属性。
  • 不要使用 init()
  • 不要从 BaseObjectComponent 继承。删除这些。
  • 没有全局变量。
  • 除了 final 的辅助函数外,没有静态调用。
  • 优先抛出异常而不是修复输入。

开发工具包

  • 发布命令行工具
  • 开发命令行工具(将包符号链接到可用的应用程序)

控制台

  • 分离 web 和控制台应用程序
  • 可能消除基础应用程序(仍然需要)
  • 为控制台创建接口(使用 Symfony 的)
  • 实现可能是流行的之一(使用 Symfony 的)
  • 确保应用程序可以通过配置添加命令

文档

  • 遵循最佳实践。
  • 不要使用“MVC”术语。
  • 从 Yii 2 升级。

RBAC

RBAC 实现为 独立于框架的包

  • 完成重构。
  • 确保它遵循最佳实践。
  • 将驱动程序拆分为包。

视图

视图实现为 独立于框架的包

  • 完成重构(查看 issue)。
  • 移植小部件。
  • 重新思考并实现活动表单小部件。
  • 实现缓存小部件。

数据抽象和网格

  • 完成 数据抽象
  • 移植排序,使用数据抽象。应该是 yii-dataview 的一部分。
  • 移植分页,使用数据抽象。应该是 yii-dataview 的一部分。
  • 移植网格,使用数据抽象。应该是 yii-dataview 的一部分。
  • 移植列表,使用数据抽象。应该是 yii-dataview 的一部分。

验证器

  • 完成 主包 重新设计
  • 移植必要的验证器

调试工具栏

  • 移植调试工具栏。

Gii

  • 移植 Gii。

基础设施

其他