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

Sam Dark

Новичок
Всем привет! Это первый апдейт в этом году, который, надеюсь, начался для вас столь же продуктивно. Я решил, что буду называть апдейты этого года также, как называют номера печатных журналов. Так их проще отличать, да и придумывать каждый раз название не нужно :)

Yii 1.1, Yii 2 и расширения
Вышли несколько релизов:
Yii 3
В дополнение, Wilmer Arambula попробовал портировать слой для работы с базой данных из Yii 2. На данный момент это лишь эксперимент, но в будущем он может перерасти во что-то большее. В Yii 3 мы не привязываемся к конкретной библиотеке. Сейчас планируется начать с Cycle ORM из коробки.
Фонд
Так как Tidelift позволил собрать дополнительные средства, я предложил тратить больше времени на Yii вместо коммерческих проектов. Эксперимент прошёл успешно. Первым возможность опробовал roxblnfk. Дополнительное время позволило ему поработать над интеграцией с Cycle ORM, улучшением пакета web, концептом конфигов (пока не смёржен), поддержкой поддиректорий и небольшими исправлениями.
В поисках дополнительного финансирования я планирую обратиться в крупные PHP-компании. В идеале это позволит сформировать небольшую команду, сфокусированную целиком на фреймворке. Это всё очень сильно ускорит.
Спасибо!
Я хочу сказать спасибо всем, кто поддерживает фреймворк. Вместе у нас всё получится.
Отдельное спасибо тем, кто помог Yii 3 кодом:
 

Sam Dark

Новичок
Если комментарии конструктивны, то конечно комментировать.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Саша :) я конструктивен, как только можно. Мне тут некоторые 10 лет вспоминают уже.
Я человек обучаемый, поэтому вопрос не совсем праздный, как ты понимаешь.

* касательно roadrunner - интереснее preload в 7.4, особенно с кешем
* какие PSR реализует yii3? В частности, интересны 7,11,14,15
* rate limiter - это же надо делать на уровне nginx?
* assets - да выкиньте уже их, фронт давно на ноде
* кто-нибудь думает про контейнеры, сервисы без html?
 

Sam Dark

Новичок
* касательно roadrunner - интереснее preload в 7.4, особенно с кешем
RoadRunner интереснее preload или preload интереснее RoadRunner? Вообще это две совершенно разные штуки.

* какие PSR реализует yii3? В частности, интересны 7,11,14,15
1, 3, 4, 7, 11, 12, 14, 15, 16, 17.

* rate limiter - это же надо делать на уровне nginx?
Зависит от типа проекта. Если это что-то вроде CMS, то PHP реализация пригодится. Если это проект, который мы сами разворачиваем — нет.

assets - да выкиньте уже их, фронт давно на ноде
Это всего-лишь способ подключения ресурсов к View. Как их собирать и собирать ли — выбор разработчика.

* кто-нибудь думает про контейнеры, сервисы без html?
DI-контейнер или Docker имеется ввиду? Под сервисом без HTML имеется ввиду REST/GraphQL?
 

fixxxer

К.О.
Партнер клуба
Если это что-то вроде CMS, то PHP реализация пригодится.
Ну не знаю. Через 5 лет все современные коробочные продукты будут разворачиваться через Docker/k8s.
Понятно, что ниша битриксов с джумлами останется, но, во-первых, там скорее Yii1 с его джейкверями нужен, а, во-вторых, не нафиг ли эту нишу, если - судя по демке - явно хочется сделать как в Симфони, только попроще и с PSR? :)
 

Sam Dark

Новичок
Один из успешных продуктов на Yii 2 — https://craftcms.com/. Они делились со мной статистикой, как кто разворачивает. И большинство, к сожалению, контейнерами не пользуется. Ну и забивать на "коробочную" нишу не вижу смысла, не настолько много это добавляет нам проблем как разработчикам фреймворка. Тот же Симфони относительно успешно используется для коробочных решений, кстати. Например, phpbb или Drupal.
 

fixxxer

К.О.
Партнер клуба
Тот же Симфони относительно успешно используется для коробочных решений, кстати. Например, phpbb или Drupal.
Ой, ну там как раз жесть, симфони-компоненты посреди кода а-ля php4.

И большинство, к сожалению, контейнерами не пользуется.
Это пока. Когда кто-нибудь догадается сделать инфраструктуру, которая приведет к тому, что пользователю надо нажать кнопочку "установить ${fooProduct} на ${cloudProvider}", а разработчикам не надо будет всю обвязку деплоя каждый раз велосипедить - конечному пользователю и знать не надо будет, что там внутри контейнеры. Зачатки этого уже есть много где.
 

fixxxer

К.О.
Партнер клуба
Я скорее о приоритетах :)
Если так и хотят остаться фреймворком для CMS-ок и контентных сайтов, непонятно, зачем такая symfony-inspired архитектура - это для "раз-два и в продакшен" скорее минус.
А если не хотят, то это где-то там в конце бэклога уместнее.

кто-то что-то реализует,
Это скорее идея, что можно было бы реализовать и на этом зарабатывать (привет, laravel forge)
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
А вы, кстати, уже окончательно решили прикручивать Cycle так, что без аннотаций не заюзаешь?
Я вот, например, эту всю магию не люблю, схему описываю вручную, миграции делаю напрямую через Spiral.
Ну, плюс к тому, мои кастомные расширения схемы (типа маппинга PK <=> value object) ко всем этим аннотациям и компиляторам прикрутить - еще та задачка.

Мне-то, в принципе, пофиг (сделал свои бандлы для Symfony и мне хорошо), но кому-то может такое же понадобиться. А у вас там все, похоже, опять прибито гвоздями, как вы любите :)
 

Sam Dark

Новичок
А вы, кстати, уже окончательно решили прикручивать Cycle так, что без аннотаций не заюзаешь?
Я вот, например, эту всю магию не люблю, схему описываю вручную, миграции делаю напрямую через Spiral.
Ну, плюс к тому, мои кастомные расширения схемы (типа маппинга PK <=> value object) ко всем этим аннотациям и компиляторам прикрутить - еще та задачка.
Нет. Цели делать только через аннотации нет. Так потому что вот таких кейсов у нас пока нет. Никто не просил и не рассказывал детально как и что настраивает. Нет спроса — делать незачем если нам самим не нужно. Сообщество открытое, нужно — участвуйте.
 

fixxxer

К.О.
Партнер клуба
Ну, я-то делать точно не буду, мне и на symfony хорошо.
Но смысл в том, чтобы растащить на разные зависимости spiral, базовый cycle/orm и schema compiler.
В базовом разработчик сам определяет, откуда берется Schema, в том, который через compiler, Schema берется компиленная.
 

Yoskaldyr

"Спамер"
Партнер клуба
1, 3, 4, 7, 11, 12, 14, 15, 16, 17.
как вариант можно добавить тесты и бенчи для PSR-7 и подобных как здесь.
для примера многие либы использующие PSR-7 реквест/респонс после активного пиара этой либы и типа что она самая быстрая, начали ее использовать, а не zend-diactoros (референсная либа для PSR-7 долгое время)
 

fixxxer

К.О.
Партнер клуба

Фиксится легко - schema сделать отдельной зависимостью, разделить хелпер на MigrationsProvider и SchemaProvider.

(Слово helper в имени класса - это вообще четкий маркер архитектурных проблем.)
 

Sam Dark

Новичок
как вариант можно добавить тесты и бенчи для PSR-7 и подобных как здесь.
для примера многие либы использующие PSR-7 реквест/респонс после активного пиара этой либы и типа что она самая быстрая, начали ее использовать, а не zend-diactoros (референсная либа для PSR-7 долгое время)
Мы как раз nyholm/psr7 сейчас используем как реализацию по-умолчанию. Я написал свою и она получилась очень очень похожей. В итоге интересные штуки перекочевали туда: https://github.com/Nyholm/psr7/commit/c448e0d2b185372157cc1ee566fc41390ae30dce
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
RoadRunner интереснее preload или preload интереснее RoadRunner? Вообще это две совершенно разные штуки.
RoadRunner - игрушка, у него будет ноль целых ноль десятых процента проектов.
В серьезном проекте инфраструктурная зависимость runtime от сторонней библиотеки на golang с непредсказуемым lifecycle ради +10% в php за счет утечек памяти? Версию php обновить - такое же эффект.
На шареды его не поставить, на VPS проще докинуть $10 и вынести базу на отдельную виртуалку.

А preload будет условно везде, и его нужно готовить. Удобно иметь готовый пакет анализа запросов с генерацией preload-скрипта прямо в фреймвоке. Включил лог, собрал статистику в файл, запустил команду, сгенерил, включил в конфиге, вперед.

Это всего-лишь способ подключения ресурсов к View. Как их собирать и собирать ли — выбор разработчика.
OK

DI-контейнер или Docker имеется ввиду?
Я про докер - yii2, как и Sy4, ставится в контейнер только с хаком, я просто отдебажил, но это было не очевидно.
Проброс переменных окружения, логгер в stdout.
Например, в проде и в dev удобно использховать одну конфигурацию стека с переопределением переменных.
Чтобы люди делали в докере - им нужен пример стека с интеграцией, аналогично образцу приложения для начала проекта.
Из опыта, один раз запускают проект с первого тычка и без танцев вообще, хоть на маке, хоть на винде, без настроек и установок - сразу забывают как жили без контейнеров.
Могу помочь.

Под сервисом без HTML имеется ввиду REST/GraphQL?
RPC/GraphQL, я бы сказал. Почти все RESTful api маскируют RPC-вызовы.
Сваггер удобен, поэтому берем restful-style синтаксис.

Сложность проектов со временем растет, весь HTML ушел на фронт в ноду с отдельным деплоем.
На php остается только middleware, но он становится сложнее и больше, и вот в этом нужна помощь со стороны фреймвока.
 
Сверху