{"id":410994,"date":"2024-06-29T21:42:36","date_gmt":"2024-06-29T21:42:36","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=410994"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=410994","title":{"rendered":"<span>Yii news 2020, issue 5<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>Hello, community!<\/p>\n<p>  <\/p>\n<p>It is time for another Yii news issue. Both Yii 2 and Yii 3 are doing well.<\/p>\n<p>  <\/p>\n<p>I&#8217;ve finally updated <a href=\"https:\/\/www.yiiframework.com\/team\" rel=\"nofollow\">the team page<\/a> on the website to reflect the current state of things.<\/p>\n<p>  <\/p>\n<p>Konstantin Sirotkin is back and actively taking care of ElasticSearch Yii 2 extension.<\/p>\n<p>  <\/p>\n<p>Yii 3 main team was formed (actually happened late 2019). Likely you know the names because most were mentioned in previous Yii news issues.<\/p>\n<p>  <\/p>\n<p>Also, we have <a href=\"https:\/\/www.yiiframework.com\/status\/3.0\" rel=\"nofollow\">partially moved to GitHub actions<\/a>. Experience is great so far, so we can definitely recommend that. We&#8217;re adding <a href=\"https:\/\/github.com\/phan\/phan\" rel=\"nofollow\">phan static analysis<\/a><br \/>  and running tests with <a href=\"https:\/\/infection.github.io\/\" rel=\"nofollow\">Infection<\/a> to make code quality even better.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>I&#8217;ve spent some time on <a href=\"https:\/\/yiipowered.com\/en\" rel=\"nofollow\">YiiPowered<\/a>, a place to collect Yii-powered projects that has 571 projects listed so far. Enhancements are:<\/p>\n<p>  <\/p>\n<ul>\n<li>Ability to add projects made with Yii 3.0.<\/li>\n<li>Images are automatically fetched from the real website every night for published projects with missing images.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>Last time I have mentioned <a href=\"https:\/\/forum.yiiframework.com\/t\/php-russia-online-2020\/129408\" rel=\"nofollow\">PHP Russia Online<\/a> conference.<br \/>  It went well and videos <a href=\"https:\/\/www.youtube.com\/watch?v=khW3w5C9yZg&amp;list=PLsdzlHt60Mu1mZa6u6bkH1PX8N3eG_Ifr\" rel=\"nofollow\">are already available<\/a>.<\/p>\n<p>  <\/p>\n<p>As an experiment, I&#8217;ve recorded a video of <a href=\"https:\/\/www.youtube.com\/watch?v=9-6IUSi8O30\" rel=\"nofollow\">me working on code reviews<\/a>. I&#8217;d really like to know your opinion on it. Is it worth doing something like these more?<br \/>  Do you want to know any part of the Yii development process or internals?<\/p>\n<p>  <\/p>\n<h2 id=\"yii-2\">Yii 2<\/h2>\n<p>  <\/p>\n<p><a href=\"https:\/\/www.yiiframework.com\/news\/293\/yii-2-0-36\" rel=\"nofollow\">Version 2.0.36 was released<\/a>. It is an important release because of dependency injection container enhancements. It is now closer in features to the one in Yii 3.<\/p>\n<p>  <\/p>\n<p>In both web controller actions and console controller actions, the following now is possible:<\/p>\n<p>  <\/p>\n<pre><code class=\"php\">namespace app\\controllers;  use yii\\web\\Controller; use app\\components\\BookingInterface;  class HotelController extends Controller {         public function actionBook($id, BookingInterface $bookingService)     {         $result = $bookingService->book($id);         \/\/ ...         } }<\/code><\/pre>\n<p>  <\/p>\n<p>Another enhancement is that references are now resolved in arrays:<\/p>\n<p>  <\/p>\n<pre><code class=\"php\">return [     ContentTypeMiddleware::class => [         '__construct()' => [             Instance::of(StreamFactory::class),             [                 'json' => Intance::of(JsonFormatter::class),                 'yaml' => Intance::of(YamlFormatter::class),             ],         ],     ], ];<\/code><\/pre>\n<p>  <\/p>\n<p>Additionally, the following extension releases were made:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.yiiframework.com\/news\/292\/yii-2-composer-installer-2-0-10\" rel=\"nofollow\">Composer installer 2.0.10<\/a> enhancing Composer 2 support.<\/li>\n<li>ElasticSearch <a href=\"https:\/\/www.yiiframework.com\/news\/289\/elasticsearch-extension-2-0-6-released\" rel=\"nofollow\">2.0.6<\/a> and <a href=\"https:\/\/www.yiiframework.com\/news\/290\/elasticsearch-extension-2-0-7-released\" rel=\"nofollow\">2.0.7<\/a> fixing bugs in &#171;legacy&#187; releases.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"yii-3\">Yii 3<\/h2>\n<p>  <\/p>\n<p>First, <a href=\"https:\/\/github.com\/yiisoft\/app\" rel=\"nofollow\">the application template was implemented<\/a>. You can start exploring Yii 3 with it. It is not final but should give you a good overview of Yii 3. Suggestions are very welcome.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yk\/xp\/-r\/ykxp-r0y8lmie6lgndfdzkomjcu.png\" data-src=\"https:\/\/habrastorage.org\/webt\/yk\/xp\/-r\/ykxp-r0y8lmie6lgndfdzkomjcu.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/or\/bk\/n6\/orbkn64gixm0bsghxftao7re-mw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/or\/bk\/n6\/orbkn64gixm0bsghxftao7re-mw.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rb\/v6\/tb\/rbv6tbrcqjrxr9o6nqlgj80yqwa.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rb\/v6\/tb\/rbv6tbrcqjrxr9o6nqlgj80yqwa.png\"\/><\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.yiiframework.com\/news\/291\/aliases-1-0-0-released\" rel=\"nofollow\">A stable version of Aliases package was released<\/a> with 100% test coverage and a <a href=\"https:\/\/infection.github.io\/guide\/index.html\" rel=\"nofollow\">100% mutation score<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/injector\" rel=\"nofollow\">Injector 1.0.1<\/a> was released adding PHP 8 support.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/form\/tree\/master\/src\/Widget\" rel=\"nofollow\">Form widgets<\/a> were added to <a href=\"https:\/\/github.com\/yiisoft\/form\" rel=\"nofollow\">yiisoft\/form<\/a>. There were other enhancements as well.<\/li>\n<li>More packages got strict types.<\/li>\n<li>More tests were added to <a href=\"https:\/\/github.com\/yiisoft\/yii-gii\" rel=\"nofollow\">yiisoft\/gii<\/a>, <a href=\"https:\/\/github.com\/yiisoft\/yii-web\" rel=\"nofollow\">yiisoft\/yii-web<\/a>. <\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-web\/pull\/235\" rel=\"nofollow\">Auto-login middleware<\/a> you probably know as &#171;remember me&#187; was implemented.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/composer-config-plugin\/\" rel=\"nofollow\">Composer config plugin<\/a> was covered with more tests and can now rebuild configs without preliminary build. It now also generates fewer files and has limited support for environment variables. Finally, it now works with Composer 2.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-web\/pull\/217\" rel=\"nofollow\">ErrorHandler error HTML page could now be customized<\/a>.<\/li>\n<li>Console application got <code>ApplicationStartup<\/code> and <code>ApplicationShutdown<\/code> events, and a nice way to configure event handlers via <code>config\/events-console.php<\/code>. These are <a href=\"https:\/\/github.com\/yiisoft\/yii-debug\/blob\/master\/config\/events-console.php#L17\" rel=\"nofollow\">currently used in yiisoft\/yii-debug<\/a>.<br \/>  Overall config was refreshed adopting a new style and allowing more customization.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-twig\" rel=\"nofollow\">Twig view renderer<\/a> was implemented.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-demo\/pull\/96\" rel=\"nofollow\">route\/list command was added to yii-demo<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/rbac\" rel=\"nofollow\">RBAC package<\/a> was redesigned and <a href=\"https:\/\/github.com\/yiisoft\/rbac-php\" rel=\"nofollow\">PHP file storage<\/a> was implemented for it.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/arrays\/blob\/master\/src\/Modifier\/ReverseBlockMerge.php\" rel=\"nofollow\">ReverseBlockMerge<\/a> modifier was added to the arrays package. It is used in event configs in the application to ensure the correct order of handlers.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-db-migration\" rel=\"nofollow\">A database migrations<\/a> package was implemented.<\/li>\n<li>Configuration style more or less formed. <a href=\"https:\/\/github.com\/yiisoft\/app\/tree\/master\/config\" rel=\"nofollow\">It&#8217;s based on service providers now<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-cycle\" rel=\"nofollow\">Cycle ORM integration package<\/a> got more cleanup, new configs style, and some extra features.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/http\/pull\/10\" rel=\"nofollow\"><code>HTTP package got a Header<\/code> class that contains constants for common HTTP headers<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-queue\" rel=\"nofollow\">Queue package<\/a> was covered with more tests and got some bugfixes.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-web\/pull\/236\" rel=\"nofollow\">HTTPS redirection middleware was added to yiisoft\/yii-web package<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-dev-tool\" rel=\"nofollow\">Yii development tool<\/a> we use to develop Yii 3 with, got more tests and new features such as <a href=\"https:\/\/github.com\/yiisoft\/yii-dev-tool\/pull\/84\" rel=\"nofollow\"><code>automatically fixing composer.json<\/code> dependencies based on source code<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-bootstrap5\" rel=\"nofollow\">Bootstrap 5 package was implemented<\/a>.<\/li>\n<li>DI container started to resolve <code>Reference::to()<\/code> inside of arrays.<\/li>\n<li>Automatic inflection-based naming for forms and controller IDs was introduced to ease day-to-day development.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/yii-bulma\" rel=\"nofollow\">An integration package<\/a> for the <a href=\"https:\/\/bulma.io\/\" rel=\"nofollow\">Bulma CSS framework<\/a> was implemented. It is currently used in the application template.<\/li>\n<li>Progress was made on <a href=\"https:\/\/github.com\/yiisoft\/yii-rest\" rel=\"nofollow\">yiisoft\/yii-rest package<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/data\/pull\/40\" rel=\"nofollow\">Data package got a DataReaderInterface::readOne() method<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>A bigger picture is available in <a href=\"https:\/\/trello.com\/b\/GiAnIAir\/yii-3\" rel=\"nofollow\">a Trello board<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"new-and-adjusted-internal-guidelines\">New and adjusted internal guidelines:<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/003-roadmap.md\" rel=\"nofollow\">003 \u2014 Roadmap<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/013-code-review.md\" rel=\"nofollow\">013 \u2014 Code Review<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"new-and-adjusted-guide-pages\">New and adjusted guide pages:<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/intro\/what-is-yii.md\" rel=\"nofollow\">What is Yii<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/start\/installation.md\" rel=\"nofollow\">Installing Yii<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/start\/workflow.md\" rel=\"nofollow\">Running Applications<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/start\/hello.md\" rel=\"nofollow\">Saying Hello<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/start\/forms.md\" rel=\"nofollow\">Working with Forms<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/start\/looking-ahead.md\" rel=\"nofollow\">Looking Ahead<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/structure\/middleware.md\" rel=\"nofollow\">Middleware<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/concept\/configuration.md\" rel=\"nofollow\">Configuration<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/concept\/aliases.md\" rel=\"nofollow\">Aliases<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/runtime\/routing.md\" rel=\"nofollow\">Routing and URL generation<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/security\/authentication.md\" rel=\"nofollow\">Authentication<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/blob\/master\/guide\/en\/glossary.md\" rel=\"nofollow\">Glossary<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/docs\/tree\/master\/guide\/zh-CN\" rel=\"nofollow\">The Chinese translation was started<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"reading-recommendations\">Reading recommendations<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/yiifeed.com\/news\/495\/vuejs-in-legacy-yii-app\" rel=\"nofollow\">Vue.js in legacy Yii app<\/a><\/li>\n<li><a href=\"https:\/\/yiifeed.com\/news\/496\/fresh-yii-and-extension-manuals-in-various-formats\" rel=\"nofollow\">Fresh Yii and extension manuals in various formats<\/a><\/li>\n<li><a href=\"https:\/\/yiifeed.com\/news\/497\/yii2-doctrine-orm-simple-integration\" rel=\"nofollow\">Yii2 &amp; Doctrine ORM simple integration<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"-thank-you\">\ufe0f Thank you!<\/h2>\n<p>  <\/p>\n<p>I&#8217;d like to thank all backers and contributors making Yii 3 possible. We are moving it forward together.<\/p>\n<p>  <\/p>\n<p>Special thanks for Yii 3 code contributions goes to:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/terabytesoftw\" rel=\"nofollow\">Wilmer Arambula<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/rustamwin\" rel=\"nofollow\">Rustam Mamadaminov<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/xepozz\" rel=\"nofollow\">Dmitry Derepko<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/mapeveri\" rel=\"nofollow\">Mart\u00edn Peveri<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/strychu\" rel=\"nofollow\">Hubert Strychalski<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/yiiliveext\" rel=\"nofollow\">yiiliveext<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/jakharbek\" rel=\"nofollow\">Jakharbek<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/roxblnfk\" rel=\"nofollow\">Aleksei Gagarin<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/romkatsu\" rel=\"nofollow\">Roman Tsurkanu<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/thenotsoft\" rel=\"nofollow\">Alexander Nekrasov<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/skugarev\" rel=\"nofollow\">skugarev<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/andrew-demb\" rel=\"nofollow\">Andrii Dembitskyi<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/viktorprogger\" rel=\"nofollow\">Viktor Babanov<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/Thoulah\" rel=\"nofollow\">Thoulah<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/rugabarbo\" rel=\"nofollow\">Pavel Ivanov<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/SilverFire\" rel=\"nofollow\">Dmytro Naumenko<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/hiqsol\" rel=\"nofollow\">Andrii Vasyliev<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/wiperawa\" rel=\"nofollow\">wiperawa<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/zhuzixian520\" rel=\"nofollow\">Trevor<\/a>.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/510204\/\"> https:\/\/habr.com\/ru\/articles\/510204\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>Hello, community!<\/p>\n<p>  <\/p>\n<p>It is time for another Yii news issue. Both Yii 2 and Yii 3 are doing well.<\/p>\n<p>  <\/p>\n<p>I&#8217;ve finally updated <a href=\"https:\/\/www.yiiframework.com\/team\" rel=\"nofollow\">the team page<\/a> on the website to reflect the current state of things.<\/p>\n<p>  <\/p>\n<p>Konstantin Sirotkin is back and actively taking care of ElasticSearch Yii 2 extension.<\/p>\n<p>  <\/p>\n<p>Yii 3 main team was formed (actually happened late 2019). Likely you know the names because most were mentioned in previous Yii news issues.<\/p>\n<p>  <\/p>\n<p>Also, we have <a href=\"https:\/\/www.yiiframework.com\/status\/3.0\" rel=\"nofollow\">partially moved to GitHub actions<\/a>. Experience is great so far, so we can definitely recommend that. We&#8217;re adding <a href=\"https:\/\/github.com\/phan\/phan\" rel=\"nofollow\">phan static analysis<\/a><br \/>  and running tests with <a href=\"https:\/\/infection.github.io\/\" rel=\"nofollow\">Infection<\/a> to make code quality even better.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-410994","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/410994","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=410994"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/410994\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=410994"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=410994"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=410994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}