Хроники Yii3
625 subscribers
43 photos
1.7K links
Описание процесса разработки фреймворка из первых рук 😎

Обсуждение:
https://yangx.top/yii3ru

Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #yiisoftErrorHandler

Изменена логика прекращения работы скрипта в Yii Error Handler при возникновении исключения: вместо прямого вызова exit(1), теперь этот вызов регистрируется с помощью register_shutdown_function() (PR):

register_shutdown_function(static function (): void {
exit(1);
});


Подробнее о предпосылках такого решения можно почитать в PR #19401 в Yii2.
⚡️ #yiisoftYiiDbMigration

Немного подчистили код, улучшили описание в readme и обновили конфигурации GitHub Actions в пакете Yii DB Migration (PR).
⚡️ #yiisoftValidatorRulesContainer #yiisoftValidatorRuleHandlerContainer

Реализовали контейнер правил валидации Yii Validator Rule Handler Container и переименовали пакет из yiisoft/validator-rules-container в yiisoft/validator-rule-handler-container (PR).
⚡️ #yiisoftErrorHandler

Несколько улучшений в Yii Error Handler (PR):
- добавили событие ApplicationError, возникающее после обработки ошибки перед завершением работы приложения;
- добавили восстановление текущей директории на момент возникновения события ApplicationError.
⚡️ #yiisoftValidator

В пакете Yii Validator добавили более подробное описание конфигурации правила Nested (PR).
⚡️ #yiisoftDataDb

Много доработок в Yii Data DB (PR):
- добавлен фильтр IsNull;
- добавлена поодержка DateTimeInterface в качестве значений;
- вместо класса Query теперь используется интерфейс QueryInterface;
- метод QueryDataReader::prepareQuery() переименован в getPreparedQuery() и сделан публичным;
- финализированы классы процессоров;
- добавлены новые тесты.
⚡️ #yiisoftForm #yiisoftYiiBulma #yiisoftYiiBootstrap5 #yiisoftDemo

Закончили большой рефакторинг пакета Yii Form (PR):

• Явно выделили фабрику для создания полей, которая позволяет применять ко всем полям общую конфигурацию.

• Сделали хелпер Field со статическими методами для создания полей форм и возможностью одновременно использовать в приложении несколько общих конфигураций для полей.

Адаптировали к этим изменениям демо веб-приложения (PR) и конфигурации в пакетах Yii Bulma (PR) и Yii Bootstrap 5 (PR).
👍2
⚡️ #yiisoftDi #yiisoftConfig

Улучшили производительность:

• в Yii Dependency Injection при получении объектов по тегу из композитного контейнера (PR);

• в Yii Config во время обработки модификаторов ReverseMerge и RecursiveMerge (PR).
👍3
⚡️ #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftHttp #yiisoftI18n #yiisoftLog #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftMailerSymfony #yiisoftMiddlewareDispatcher #yiisoftMutexPdoOracle #yiisoftMutexRedis #yiisoftRbac #yiisoftRbacDb #yiisoftRbacPhp #yiisoftRequestBodyParser #yiisoftRateLimiter #yiisoftProxy #yiisoftProfiler #yiisoftMutexPdoPgsql #yiisoftMutexPdoMysql #yiisoftMailerSwiftmailer #yiisoftHtml #yiisoftRequestModel #yiisoftRequirements #yiisoftRouter #yiisoftRouterFastroute #yiisoftSession #yiisoftStrings #yiisoftTestSupport #yiisoftTranslator #yiisoftTranslatorMessageDb #yiisoftUser #yiisoftView #yiisoftViewTwig #yiisoftWidget #yiisoftYiiConsole

Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:

- Yii Mailer Library (PR)
- Yii Logging Syslog Target (PR)
- Yii HTTP (PR)
- Yii Internationalization Library (PR)
- Yii Logging Library (PR)
- Yii Logging DB Target (PR)
- Yii Logging Email Target (PR)
- Yii Mailer Symfony Mailer Extension (PR)
- Yii Middleware Dispatcher (PR)
- Yii Mutex Oracle PDO Driver (PR)
- Yii Mutex Redis Driver (PR)
- Yii Role-Based Access Control (PR)
- Yii RBAC Database (PR)
- Yii RBAC PHP File Storage (PR)
- Yii Request Body Parser (PR)
- Yii Rate Limiter Middleware (PR)
- Yii Proxy (PR)
- Yii Profiler (PR)
- Yii Mutex PostgreSQL PDO Driver (PR)
- Yii Mutex MySQL PDO Driver (PR)
- Yii Mailer SwiftMailer Extension (PR)
- Yii HTML (PR)
- Yii Request Model (PR)
- Yii Requirements Checker (PR)
- Yii Router (PR)
- Yii Router FastRoute Adapter (PR)
- Yii Session (PR)
- Yii Strings (PR)
- Yii Test Support (PR)
- Yii Message Translator (PR)
- Yii Translator DB Message Storage (PR)
- Yii User (PR)
- Yii View (PR)
- Yii View Twig Renderer (PR)
- Yii Widget (PR)
- Yii Console (PR)
🔥4👍3
⚡️ #yiisoftProxy #yiisoftYiiDebug

Сделали рефакторинг пакета Yii Proxy (PR):

• Сгруппировали все классы конфигураций в новой папке Config.

• Переименовали класс ClassConfigurator в ClassConfigFactory.

• Удалил "мёртвый" код.

• Подняли минимальную версию PHP до ^8.0.

• Начали использовать именованные параметры.

• Исправили ошибки psalm.

• Актуализировали конфигурации GitHub Actions.

• Обновили конфигурацию PHPUnit.

Соответствующие изменения внесли Yii Debug (PR).
⚡️ #yiisoftMailerSwiftmailer

Пакет Yii Mailer SwiftMailer Extension пометили как устаревший, вместо него предлагается использовать Yii Mailer Symfony Mailer Extension (PR).
👍1
⚡️ #yiisoftYiiDebugViewer #yiisoftYiiBulma #yiisoftYiiCaptcha #yiisoftYiiBootstrap5

Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:

- Yii Debug Viewer (PR)
- Yii Bulma (PR)
- Yii Captcha Widget (PR)
- Yii Bootstrap 5 (PR)
⚡️ #yiisoftErrorHandler

В пакете Yii Error Handler добавили поддержку markdown при выводе решений из дружественных исключений (PR).
🔥11
⚡️ #yiisoftForm

В пакете Yii Form у полей для части шаблона {input} (сам элемент формы) добавлен тег-контейнер (PR).

Это полезно при использовании некоторых CSS-фреймворков, например, Bulma:

<div class="field">
<label class="label">Name</label>
<div class="control"> // <-- Начало контейнера
<input class="input" type="text" placeholder="Text input">
</div> // <-- Конец контейнера
</div>
👍2
⚡️ #yiisoftForm

Несколько улучшений в Yii Form:

• изменили тип данных, передаваемых в FormModel::load() с array на array|object|null, так как данные именно такого типа возвращает метод Psr\Http\Message\ServerRequestInterface::getParsedBody(), который чаще всего используется для заполнения формы (PR);

• добавили возможность указать специальные классы для элементов форм, которые будут добавляться в случае успешной/не успешной валидации поля (PR);

• в документации актуализировали статью «Создание форм» (PR).
👍3
⚡️ #yiisoftMiddlewareDispatcher

В пакете Yii Middleware Dispatcher исключение InvalidMiddlewareDefinitionException сделали дружественным (PR).
🔥 #Новости

Виктор Бабанов из core-команды Yii3 завёл личный блог, где планирует рассказывать интересные вещи о разработке, о процессах в IT-компаниях, о нас, разработчиках, и о технических нюансах (использовании паттернов, лайфхаках и так далее).

Подписывайтесь, будет интересно! А Виктору удачи и упорства в этом начинании 💪

🌿 Адрес сайта: https://viktorprogger.name/ru/
🌿 Группа для обсуждения: @viktorprogger_blog
👍17🎉1🤮1
⚡️ #yiisoftValidator

Сделали важный рефакторинг в Yii Validator, разделив правила на собственно само правило и обработчик правила (PR).

Такой подход позволит автоматически разрешать зависимости обработчика правила (например, правило, которому для проверки требуется подключение к БД).

#yiisoftForm #yiisoftRequestModel #yiisoftYiiMiddleware #yiisoftYiiDebugApi #yiisoftDemoApi

Адаптировали к изменениям в валидаторе пакеты и приложения:

- Yii Form (PR)
- Yii Request Model (PR)
- Yii Middleware (PR)
- Yii Debug API (PR)
- Демо API-приложения (PR)
⚡️ #yiisoftDefinitions

Несколько изменений в Yii Definitions (PR):

• метод DefinitionValidator::validateArrayDefinition() сделан публичным;

• удалён метод ParameterDefinition::isBuiltin().
#yiisoftUser #ПатчРелиз #Релиз

🎁 Yii User 1.0.1

• Добавлена поддержка psr/log версий ^2.0 и ^3.0 (PR).
👍4