Новости Yii 2020, выпуск 5

    Приветствую!


    Время очередного выпуска новостей Yii. Как у Yii 2, так и у Yii 3 всё хорошо :)


    На самом деле, в этом году перед этим выпуском было ещё четыре, как следует из порядкового номера. Но я был так увлечён Yii 3, что забыл про хабр… Почитать их можно прямо на главной https://yiiframework.ru/. Ну или, если больше нравится английский, на нашей странице на OpenCollective.

    Наконец, дошли руки обновить страницу с командой на официальном сайте.
    Константин Сироткин вернулся и активно занимается расширением Yii 2 ElasticSearch.
    Сформирована основная команда Yii 3. Вообще это по факту произошло в конце 2019-го. Имена, вероятно, вам известны так как упоминались в предыдущих выпусках.


    Мы частично переместили тесты на GitHub actions. Полёт прекрасный, рекомендуем. Мы добавляем статический анализ через phan
    и прогоняем тесты через Infection чтобы ещё больше повысить качество кода.


    Я потратил немного времени на YiiPowered, где мы собираем проекты на Yii. Сейчас там 571 проект. Улучшения такие:


    • Можно добавлять проекты на Yii 3.0.
    • Для проектов, для которых не заполнены скриншоты, они делаются и загружаются автоматически каждую ночь.

    В прошлом выпуске я упомянул конференцию PHP Russia Online.
    Прошла она хорошо. Доступны видео.


    В качестве эксперимента, я записал скринкаст во время работы над фреймворком.
    Очень хочется узнать ваше мнение. Стоит писать ещё? Хотите узнать про какую-то часть фреймворка или процесс разработки?


    Yii 2


    Вышла версия 2.0.36. Это важное обновление из-за улучшений в работе
    DI-контейнера. Он стал немного ближе к Yii 3.


    В action как веб, так и консольного контроллеров теперь можно так:


    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);
            // ...    
        }
    }

    Ещё одно улучшение в том, что Instance::of() начал работать в массивах:


    return [
        ContentTypeMiddleware::class => [
            '__construct()' => [
                Instance::of(StreamFactory::class),
                [
                    'json' => Intance::of(JsonFormatter::class),
                    'yaml' => Intance::of(YamlFormatter::class),
                ],
            ],
        ],
    ];

    Дополнительно были выпущены следующие расширения:



    Yii 3


    Во-первых, появился шаблон приложения. С него вы можете начать пробовать Yii 3.
    Это не финальная версия, но представление о том, что у нас есть, даёт. Обсуждения и конструктивная критика приветствуются.






    Общую картину можно наблюдать в Trello.


    Новые и переработанные внутренние соглашения:



    Новые страницы в руководстве по фреймворку:



    Рекомендации к чтению



    ️ Спасибо!


    Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка Yii 3. Вместе у нас всё получится.


    Отдельное спасибо тем, кто помог Yii 3 кодом:


    Похожие публикации

    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 28

      +2
      Хорошая порция изменений! В этом году будет бета какая-то? И ещё вопрос, т.к. сделали поддержку CycleORM, на неё теперь будет упор вместо старой ORM? Страя была простая и шустрая. Сycle уже какая-то огромная, хотя и более функциональная и не сильно медленная. Интересует куда теперь будет приоритет?
        +2

        Думаю что да, будет бета. На тему Cycle — приоритета не будет. Старые добрые AR и DAO никуда не делись. Портированы уже.

          0
          Под старой ORM имеется в виду Active Record?
            +2
            Да, но там не чисто AR, там такая ядерная смесь, которая очень режет глаза правоверным солидоводам, но такая удобная на практике.
          +2
          Тема ИМХО слишком черная, мне кажется подошло что бы что-то более светлее например #4575D4
            +1

            Это ещё подтюним. Вероятно, подключим самых креативных ребят из сообщества. Благо они есть.

              0
              Если что есть очень хороший дизайнер который потенциально свободен
            0

            Отличный фреймворк, один из моих любимых, особенно для быстрого прототипирования. Жгите дальше

              0

              Yii это фантастика для быстрой разработки. Спасибо вам, ребята за труд!

                0

                Александр, смотрели magento 2?

                  0

                  Нет. Стоит?

                    0

                    С удовольствием бы почитал небольшой разбор полетов от вас. В ней реализован довольно мощный di. С плагинами, кодогенерацией. Например, можно создавать виртуальные классы с заданными параметрами. Фабрики и прокси для любых классов.
                    Мне в свое время в yii2 очень не хватало этого.

                      0

                      Не обещаю что хватит времени написать разбор, но за идею спасибо.

                  0
                  Отличные новости, количество галочек на странице roadmap радует, только не тратье слишком много времени на фронт компоненты, типа yii-dataview, а лучше вообще его не делайте. Для таких вещей есть тот же vue. Ждём хотя бы беты )
                    0
                    Как же надоели эти бесконечно плодящиеся уродливые и однотипные фреймворки. Почему нельзя взять и прорабатывать один. Laravel например.
                      0

                      Почему не Yii 3 или Symfony? "Уродство" в той или иной степени есть у каждого фреймворка и Laravel уж точно не выделяется своей не уродливостью.


                      Ну и я не согласен с тем, чтобы фреймворк был один. Так не будет интересных решений в экосистеме в целом.

                        0

                        Ну раз они по Вашему все уродливые, может быть дело в архитектурном решении? И нам нужно что то концептуально новое? Я верю что можно построить безупречность. Дело в архитекторе

                          0

                          А я не верю что можно построить фреймворк, который посчитают "не уродливым" абсолютно все. Какая-то степень "уродства" будет в каждом. Это нормально.

                            0

                            Согласен. Но степень уродства будет тем меньше, чем проще будет фреймворк, чем меньше новых принципов и концепций будет изначально в нем заложено. Но в то же время он будет полным. Без обид просто я считаю что mvc концепция уже изжила себя.

                              0

                              Ну, это да. Чем меньше даёт фреймворк, тем меньше будет недовольных тем, что он даёт. Будут только недовольные тем, что чего-то он не даёт.

                                0

                                Ваш сарказм понятен. Я действительно описал так, что можно так подумать. Но я топлю за то чтобы на backend стороне больше ответственности возложить на базу данных (логика и тд). Вы скажете что не разумно, так как СУБД может меняться. Тогда сделать по принципу как сделали в react native, где код компилится под определённую платформу. Собственно все дело в моем почёте к react, и то что он не похож на это однотипное г**** как vue и angular

                                  0

                                  Не понял. Во что вы хотите компилировать PHP?

                                    0

                                    Ни во что. Я хочу вообще избавиться от backend составляющей в ходе разработки. И от всех backend фрейморков как следствие. Использовать только frontend фреймворк, а в случае где необходимо использовать базу данных обращаться к ней напрямую, заставляя все необходимые данные отдавать уже в нужной структуре во фронтенд. Для этого создать какой нибудь язык типа suql который будет общим для всех СУБД. Который не просто облегчал синтаксис sql а и мог его расширить

                                      0

                                      То есть чтобы всё выполнялось в браузере а бэкенда в традиционном понимании вообще не было? В теории можно так если написать бизнес-логику на хранимых процедурах а в качестве входа в систему использовать юзеров из базы.


                                      Мне лично такой подход неудобен, поэтому я продолжу делать Yii. Но вы попробуйте, может будет удобно.

                                        0

                                        Вот Вы уже почти поняли мою идею. Но проблема в том что и sql и язык хранимых процедур и возможности меняются от СУБД к СУБД. И хоть и sql достаточно мощен чтобы вернуть из базы все в нужном виде, постобработка и вычисления иногда все же нужны.
                                        Поэтому первое — нужен единый sql синтаксический сахар (сделаем язык общим для всех СУБД и заодно упростим его)
                                        Второе — придумаем поддержку постобработчиков.
                                        Приведу простой пример (отдалённый от жизни): вывести 10 последних зарегистрированных админа, если они зарегились в одном месяце:
                                        Скрипт будет такой:
                                        @lastTenAdmins = select from users
                                        id.desc,
                                        name
                                        join user_group
                                        join groups
                                        name
                                        where name = 'admin'
                                        limit 10;


                                        %regInSameMonth @lastTenAdmins;


                                        Функция regInSameMonth в моем случае уже написана на php которая принимает результат выполнения запроса @lastTenAdmins.

                      0

                      Ну раз они по Вашему все уродливые, может быть дело в архитектурном решении? И нам нужно что то концептуально новое? Я верю что можно построить безупречность. Дело в архитекторе

                        0

                        SamDark, в скринкасте слева от браузера видна некая панель с иконками, что это?

                          0

                          Это браузер. В Opera есть такая фича.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое