27 и 28 сентября на Стачке в Питере будем я и Дима Дерепко. Я расскажу про Yii3 в целом, а Дима про одну из крутейших штук — Yii Debug.
Все заметки с тегом «Yii3»
-
Yii на Стачке в Питере
31 августа
-
Интервью в подкасте «Так не сойдёт»
20 ноября 2023
Довльно давно я не появлялся на публичных мероприятиях и тут мне написали ребята из «Так не сойдёт» и пригласили поговорить. Интервью получилось немного необычным потому как они не стеснялись задавать неудобные вопросы.
-
Yii3 Validator 1.0.0
22 февраля 2023
Команда Yii только что выпустила первую стабильную версию валидатора. Это был один из самых сложных релизов из-за огромного количества ситуаций, которые нужно было учесть.
Как и со многими пакетами Yii3, всё получилось не быстро, но результат радует.
-
Новости Yii 2022, выпуск 2
20 ноября 2022
Написал свежий выпуск новостей Yii. Долго их не было, но прогресс, в общем, радует.
-
Yii3 Overview
14 ноября 2022
Дмитрий Дерепко из команды Yii выпустил две части Yii overview — серии постов про Yii3.
-
Yii 3 и PSR
21 августа 2021
На хабре задали интересный вопрос: «зачем пилить свои имплементации шаблонных вещей когда вокруг куча готовых, протестированных, оптимизированных? Не является ли это бутылочным горлышком в процессе реализации фреймворка?»
Распишу по каждому PSR-у:
- 1 - Basic Conding Standard. Исплользуем, не переделывали.
- 3 - Logger Interface. Можно было взять Monolog, но нам нравился концепт логгера из Yii 2 больше, поэтому портировали и почистили. Но можно использовать в своих приложениях и Monolog.
- 4 - Autoloading Standard. Исплользуем, не переделывали.
- 6 - Caching Interface. Не используем, см. 16.
- 7 - HTTP Message Interface. Своё сразу решили не делать. Сначала сравнили всё и выбрали самую лёгкую реализацию Tobias Nyholm. Но потом пришёл Евгений, у которого была ещё более оптимальная реализация. Впоследствии он влился в команду фреймворка.
- 11 - Container Interface. Контейнер свой потому как стандарт регламентирует только получение зависимостей, а конфигурирование — нет. Сделать удобное конфигруирование как раз задача для фреймворка и то, что его отличает от других. И да, вот эта реализация кушает много времени.
- 12 - Extended Coding Style Guide. Этот стандарт я координировал в PHP-FIG. Конечно же, используем.
- 13 - Hypermedia Links. Не используем.
- 14 - Event Dispatcher. Написали свой, ничего достойного готового на момент выхода стандарта не было, а события уже были нужны.
- 15 - HTTP Handlers. Тоже центральная часть фреймворка так как определяет, какие Middleware поддерживаются, как задаются и, главное, как вызываются. Поэтому написали свой.
- 16 - Simple Cache. Написали не PSR-ный yiisoft/cache, который использует любые PSR-16 адаптеры кеша и добавляет сверху всякие классные штуки. Ну а так как с Yii 2 уже был рабочий код адаптеров, портировали в PSR-16.
- 17 - HTTP Factories. См. 7.
- 18 - HTTP Client. Не будем реализовывать, будем использовать.
Каждый из пакетов мы покрываем очень хорошо тестами, поэтому после начального релиза сильной поддержки PSR-пакет с фиксированными требованиями не требует.
-
Новости Yii 2021, выпуск 3
20 августа 2021
Написал свежий выпуск новостей и выложил на хабр. Дело движется. До релиза дожмём.
-
Yii 3: пред-релизная поддержка компаний
29 июля 2021
Несмотря на то, что Yii 3 релизнут далеко не полностью, уже есть компании, которые его используют в продакшне. Чтобы получить больше обратной связи и одновременно поддержать уже использующие Yii 3 компании, мы запускаем пред-релизную бесплатную поддержку в форме чатов между компаниями и командой фреймворка. Будем отвечать на любые вопросы по фреймворку, собирать пожелания и критику.
Если хотите для своей компании такой чат — пишите в Telegram
@samdark
, добавим. -
Границы применимости статического анализа в публичных пакетах
16 июня 2021
В замечательном чате Валентина Удальцова «Пыхтелка» заметили релиз одной из библиотек Yii 3, Rate limiter и предложили вполне справедливые улучшения. kafkiansky сделал pull request, в который кроме, собственно, улучшений попало одно очень интересное изменение: вместо геттеров-сеттеров сделать свойства класса
CounterState
публичными и добавить на класс аннотацию@psalm-immutable
:/** * @psalm-immutable */ final class CounterState { public int $limit; public int $remaining; public int $resetTime; public bool $isLimitReached;
Почему так:
- Используется статический анализ через Psalm.
- @psalm-immutable не даст присваивать что-либо этим свойствам, если его добавить в continuous integration.
- В будущем легче будет мигрировать на read only properties.
- Никакой логики здесь нет, это plain object. С аннотациями меньше кода.
Неплохо. Я бы согласился, если бы речь шла исключительно про код внутри коммерческого проекта, который я контролирую полностью. В случае же публичного пакета:
- Мы не контролируем то, как пакет используется.
- Мы не можем гарантировать, что будет использоваться именно Psalm, что он будет запускаться в процессе CI, что вообще будет использоваться хоть какой-то статический анализ.
То есть полагаться на статический анализ полностью и выкинуть часть кода в публичных пакетах, к сожалению, не получится.
-
Новости Yii 2021, выпуск 1
5 марта 2021
Первый выпуск новостей за год. Релизы пакетов, интересное из разработки и немного про финансы.