Yii news 2020, issue 2
This issue was hard to get done. Not because there's no content to write about, on contrary: Yii 3 is improving and the process is so enjoyable that it was hard to stop for a moment and write about it 😅
🔷 Yii 2
- simialbi contributed code for switching Yii 2 testing from Travis to Github actions. It resulted in way better build times for both commits and pull requests. The drawback is that it is not as stable as Travis was: occasional segfaults, failure to start a service etc. so we're going to keep it to Yii 2 and watch it for now. After it stabilize, Yii 3 packages are going to be switched to it.
- haveyaseen patched PHPUnit to fully support PHP 5.4 — 7.4 producing no warnings when running tests.
- Codeception Yii 2 module was updated to support Codeception's multisession.
- Twig extension versions 2.2.2 and 2.3.0 were released.
- Auth client extension 2.2.7 was released.
- Apidoc extension 2.1.3 was released.
- Sphinx extension 2.0.13 was released.
🔶 Yii 3
That's not complete list of changes since amount of pull requests was overwhelming!
- Widget package was extracted from view and finally took its shape.
- Some standard Yii widgets were implemented and ended up in yii-widgets package.
- Initial implementation of Bootstrap 4 was done.
- We've switched automatic style corrections made via StyleCI to PSR-12.
- Almost all packages got typed properties.
- Validator package got polished.
- Both Cylce integration package and
Cycle ORM itself were further developed. ORM became more performant, integration
was refactored, got
cycle/schemacommand, SelectDataReader (implementation of "data" interface), ability to define schema in a PHP file instead of annotations. Docs were written.
- Router package was modified heavily. In addition to refactoring, partial re-implementation and bugfixes, it got ability to generate absolute URLs, better syntax, proper middleware stacking, lazy initialization and significant performance boost.
- RBAC package got refactoring.
- i18n got message formatter implemented. Translator was moved to separate package.
- Work on queue package started.
- Data package offset paginator was adjusted based on real experience using it.
- Dependabot was added to Yii 3 repositories, all dependencies were updated.
- Dataview package (lists and grids) was developed further.
- Arrays package got important fixes both new and ported from Yii 2.
- DI container got important fixes. Deferred service provider now has to explicitly list IDs of services provided.
- Some classes were removed from web package: Chain middleware, action caller middleware, callback middleware. All these are now natively supported by the router.
- Middleware dispatcher was reworked to properly stack middleware. All potentially dangerous use-cases were ensured not to be possible anymore.
- Web application started to raise events on initialization, shutdown and request processing start/end.
- Demo application got better syntax for view rendering.
- Yii 2 DB abstraction, driver implementations for PostgreSQL, MySQL, SQLite and Active Record got initial working ports to Yii 3. These are far from production quality but it is an important step towards possible standalone implementation.
- Debugger design draft was composed, implementation started.
- Event dispatcher got concrete events provider.
- Yii demo got Docker support fixed and was transformed into a blog example. It is currently extensively using Cycle ORM, Bootstrap 4 and data package. There you can see how the application could be currently developed using Yii 3. But please note that it definitely does not resemble final version. Feedback on it is more than welcome at both official forum and issue tracker.
📙 New and adjusted internal guidelines:
📙 New guide pages:
⚠️ Don't try it at home ;)
There are adventurous people who are developing first projects with Yii 3 and even deploying production instances. Even with all the harsh edges of pre-alpha, feedback is that the development process is mostly more enjoyable than Yii 2. That's a good sign.
📚 Reading recommendations
Here's some reading that resembles the spirit of Yii 3 well:
- Clean tests with PHP and PHPUnit.
- Clean Code concepts adapted for PHP.
- Object Design Style Guide by Matthias Noback.
❤️ Thank you!
I'd like to thank all backers and contributors making Yii 3 possible. We are moving it forward together.
👍 Special thanks for Yii 3 code contributions goes to: