Yii3开发的进展
Yii3 一直以来都是备受关注, 难产的程度如同Yii2发布过程, 在php活跃度下降到曾经的状态时, 大家更怕Yii3夭折了.
实际上Yii3的开发还是很活跃, 可以看到各个包也是积极的在开发和发布出来.
官方提供了一个Yii3的公示, 供大家来了解开发进度, 发展路线等.
Roadmap
We want Yii 3 to:
- Not limit developer in choosing architecture. Allow anything from "classic" MVC to DDD.
- Be based on best practices such as SOLID, GRASP etc. and teach them to community.
- Keep most good things from Yii 2.
- Be more open to global PHP community and infrastructure.
PSRs compliance
PSR compliance helps with customizability, ability to use general PHP libraries and implement less wrappers.
Here's the list of PSRs we want to implement.
PSR-3 Logger
Implemented as a separate package that is not dependent on a framework.
PSR-4 Autoloading
- [x] Autoloading is fine already.
- [x] Document on how it works.
PSR-7 HTTP message
- [x] Remove our own implementation. At least for now.
- [x] Framework packages should depend on interfaces only.
PSR-11 Container
Implemented as a separate package that is not dependent on a framework.
- [x] Framework packages should not use container directly. One should be able to instantiate everything manually.
- [x] Finish refactoring.
- [x] Remove all framework-specific implementations from the package. Move to framework.
- [x] [Implement autoloader fallback](https://github.com/yiisoft/di/issues/88)
PSR-12 Code style
- [x] Make sure code follows it.
- [x] Automate fixing style before release.
PSR-14 Event dispatcher
PSR-15 HTTP handlers
- [x] Rewrite HTTP flow to PSR-7 request-reponse + formatting response via emitter.
- [x] Provide SAPI emitter out of the box.
- [x] Make it possible to use alternative emitters such as RoadRunner.
- [x] Support middleware.
- [x] Implement filters as middleware:
- [x] Re-implement router w/ middleware support for route groups.
- [x] Filters should be middlewares.
PSR-16 Simple cache
Implemented as a separate package that is not dependent on a framework.
- [x] Framework packages should depend on interfaces only.
- [x] Split drivers into packages.
- [x] Clean up code.
PSR-17 HTTP factories
PSR-18 HTTP client
- [x] Remove our own implementation. At least for now.
- [x] Framework packages should depend on interfaces only.
Stricter types
- [x] Make sure type hinting is used everywhere.
- [x] Make sure types are as definitive as possible. Avoid varying types if possible.
Single application template
Router
Implemented as a separate package that is not dependent on a framework.
- [x] DSL for configuration.
- [x] Ability to route to any callable.
- [x] Named routes.
- [x] Route groups w/ middleware support.
Best practices and SOLID compliance of all classes/packages
- [x] Make sure interfaces follow "interface segregation" principle.
- [x] Do not use public properties.
- [x] Do not use
init()
.
- [x] Do not inherit from
BaseObject
or Component
. Remove these.
- [x] No globals.
- [x] No static calls except helpers that are final.
- [x] Prefer throwing exceptions to fixing input.
Development toolkit
- [x] Release command line tool
- [x] Development command line tool (symlinks packages into usable application)
Console
- [x] Separate web and console application
- [x] Possibly eliminate base application (still needed)
- [x] Create interface for console (using Symfony one)
- [x] Implementation may be one of the popular ones (using Symfony one)
- [x] Ensure application can add commands via config
Documentation
- [ ] Follow best practices.
- [ ] Don't use "MVC" term.
- [ ] Upgrading from Yii 2.
RBAC
RBAC is implemented as framework-independent package.
- [x] Finish refactoring.
- [x] Make sure it follows best practices.
- [x] Split drivers into packages.
View
View is implemented as framework-independent package.
- [ ] Finish refactoring (see issues).
- [x] Port widgets.
- [x] Rethink and implement active form widgets.
- [x] Implement caching widgets.
Data abstractions and Grid
- [x] Finish data abstractions.
- [ ] Port sort, make it use data abstractions. Should be part of yii-dataview.
- [ ] Port paging, make it use data abstractions. Should be part of yii-dataview.
- [ ] Port grid, make it use data abstractions. Should be part of yii-dataview.
- [ ] Port list, make it use data abstractions. Should be part of yii-dataview.
Validators
- [x] Finish main package redesign
- [x] Port necessary validators
Debug toolbar
Gii
Infrastructure
Others