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

Обсуждение:
https://t.iss.one/yii3ru

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
Download Telegram
#yiisoftForm #МинорныйРелиз #Релиз

🎁 Yii Form 1.2

• Добавлен метод Checkbox::labelPlacement(), позволяющий задать место расположения названия поля:
- в соответствии с шаблоном поля;
- обернуть чекбокс в тег <label> (по умолчанию);
- сбоку от чекбокса.

• Метод Checkbox::enclosedByLabel() помечен как устаревший.
👍7👾21
#yiisoftDi #МинорныйРелиз #Релиз

🎁 Yii Dependency Injection 1.3

• Добавлен шорткод TagReference::to() для тегов.

• Улучшено использование NotFoundException для случаев с дефинишенами.

• Выполнен небольшой рефакторинг для улучшения производительности контейнера.

• В методах ContainerConfig::withStrictMode() и ContainerConfig::withValidate() для параметра добавлено значение по умолчанию true.

• Минимальная версия PHP поднята до 8.1 и выполнен соответствующий рефакторинг.
👍32👾2
#yiisoftMailer #МажорныйРелиз #Релиз

Существенно переработана абстракция для отправки сообщений электронной почты.

Теперь пакет ни от чего не зависит и, фактически, абстракция состоит из двух интерфейсов: MessageInterface (сообщение с методами для установки/получения значений) и MailerInterface (сервис для отправки сообщений с двумя методами: send и sendMultiple).


🎁 Yii Mailer 6.0

• Добавлены простые реализации мейлера NullMailer и StubMailer.

• В конфигурацию пакета добавлена настройка FileMailer.

• Добавлен класс HtmlToTextBodyConverter для преобразования HTML-содержимого письма в текстовое содержимое.

• Добавлено перечисление Priority, которое используется вместо числового значения приоритета.

• Изменён MessageInterface:
- добавлены методы getAttachments(), getEmbeddings(), getHeaders(), withAddedAttachments() и withAddedEmbeddings();
- переименован метод withEmbedded() в withEmbeddings();
- переименован метод withAttached() в withAttachments();
- в методы withEmbeddings() и withAttachments() добавлено возможность передавать несколько файлов;
- удалены методы compose(), withTemplate() и withLocale();
- удалены методы getError() и withError().

• Добавлен класс Messsage, реализующий MessageInterface.

• Удалены MessageFactoryInterface и MessageFactory. Вместо фабрики сообщения добавлен класс MessageSettings, который передаётся в мейлер и позволяет донастроить сообщение перед отправкой.

• Переработан абстрактный класс для создания мейлеров:
- класс переименован из Mailer в BaseMailer;
- удалены методы beforeSend() and afterSend();
- финализированы методы;
- зависимости помечены как только для чтения.

• Удалены классы MessageBodyRenderer и MessageBodyTemplate.

• Переработаны классы событий AfterSend и BeforeSend:
- удалён метод getMessage();
- свойство $message сделано публичным и только для чтения;
- в BeforeSend удалена реализация StoppableEventInterface;
- в BeforeSend добавлено свойство $preventSendingMessage, позволяющее отменить отправку сообщения.

• Тип результата методов MessageInterface::with* изменён с self на static.

• Добавлен класс SendResults, который используется как результат выполнения метода MailerInterface::sendMultiple().

• Доработан текст сообщения в исключении, которое выбрасывается, когда callback для получения имени файла в FailMailer возвращает не строковое значение. Само исключение изменено с RuntimeException на LogicException.

• Удалена зависимость от yiisoft/view.

• Зависимость psr/event-dispatcher сделана опциональной.
👍51😱1👀1🤝1👾1
#yiisoftMailerSymfony #МажорныйРелиз #Релиз

🎁 Yii Mailer Symfony Mailer Extension 4.0

• Пакет адаптирован к Yii Mailer 6:
- удалён класс Message;
- в конструкторе мейлера добавлен параметр $messageSettings;
- удалено использование MessageBodyRenderer.

• Исправлено: для вложений не использовался ID файла.

• Изменения в конфигурации пакета:
- удалена конфигурация FileMailer;
- в параметрах удалён ключ writeToFiles;
- в парамтерах ключ symfony/mailer изменён на yiisoft/mailer-symfony.

• Минимальная версия PHP поднята до 8.1.

• Зависимость psr/event-dispatcher сделана опциональной.
3👍2👾1
#yiisoftMailerView

Пакет Yii Mailer View закрыт. В процессе разработки столкнулись с тем, что в текущем виде он практически бесполезен. Возможно, в будущем интеграция Yii Mailer и Yii View будет переосмыслена и разработка возобновится.
😁4🤔2👍1😢1👾1
🔥 #Новости

Закрытый телеграм-чат с разработчиками Yii3

Ранее доступ в чат предоставлялся подписчикам на boosty и sponsr. Технически доступ в чат контролировали боты этих систем.

В субботу бот Boosty вдруг решил, что он самый главный, и удалил тех, кто не был подписчиком именно на Boosty. Нам такой вариант не подходит.

Теперь доступ в чат будет предоставляться после оплаты раз и навсегда.

Как вступить в закрытый чат?

1) Сделать пожертвование с помощью sponsr, boosty или Open Collective на сумму 2000 ₽ или больше.

2) Написать письмо на почту [email protected], где указать ваш логин в Telegram и приложить подтверждение оплаты (можно просто скриншот).

———

Удалённым участникам закрытого чата отправлена ссылка-приглашение. Если кому-то не пришло, отпишитесь в комментариях к этой заметке или на почту [email protected].
👍112👾1
#yiisoftRequestProvider #МинорныйРелиз #Релиз

🎁 Yii Request Provider 1.1

• Добавлен класс RequestCookies, предоставляющий удобный доступ к кукам запроса.

• В конфигурации пакета добавлен слушатель события BeforeMiddleware из Yii Middleware Dispatcher, который автоматически запоминает объект запроса.
1👍3👾1
#yiisoftHtml #МинорныйРелиз #Релиз

🎁 Yii HTML 3.8

• Добавлена возможность обернуть элемент в произвольный тег в виджетах CheckboxList и RadioList, для чего созданы методы:
- CheckboxList::checkboxWrapTag()
- CheckboxList::checkboxWrapAttributes()
- CheckboxList::checkboxWrapClass()
- CheckboxList::addCheckboxWrapClass()
- RadioList::radioWrapTag()
- RadioList::radioWrapAttributes()
- RadioList::radioWrapClass()
- RadioList::addRadioWrapClass()

• Добавлены методы CheckboxList::checkboxLabelWrap() и RadioList::radioLabelWrap(), позволяющие указать, нужно ли оборачивать поле тегом <label> или разместить его сбоку.

• Добавлен опциональный параметр wrap в методе BooleanInputTag::label(), указывающий, нужно ли оборачивать поле тегом <label> или разместить его сбоку.

• Добавлен psalm-тип non-empty-string для результата метода Html::generateId().

• Добавлен psalm-тип non-empty-string|null для параметра метода Tag::id().

• Минимальная версия PHP поднята до 8.1.
1👍7🥱1👾1
#yiisoftForm #МинорныйРелиз #Релиз

🎁 Yii Form 1.3

• В виджете CheckboxList добавлены методы:
- checkboxWrapTag(),
- checkboxWrapAttributes(),
- checkboxWrapClass(),
- addCheckboxWrapClass(),
- checkboxLabelWrap().

• В виджете RadioList добавлены методы:
- radioWrapTag(),
- radioWrapAttributes(),
- radioWrapClass(),
- addRadioWrapClass(),
- radioLabelWrap().

• Улучшена HTML верстка виджетов CheckboxList и RadioList в темах Bootstrap 5.
1👍71👾1
#yiisoftActions #yiisoftQueue

⚡️Обновление GitHub Action для PHPBench

Добавили крутую фичу в экшен для бенчмарков! Теперь он автоматически сравнивает производительность кода в PR с мастер-веткой.

🔍 Что нового

- Экшен блокирует PR, если производительность ухудшилась
- По умолчанию используется сравнение mode(variant.time.avg) с допуском ±5%
- Можно настроить свою функцию сравнения

🛠 Использование

Уже работает в репозитории yiisoft/queue, но можно использовать где угодно.

📃 Документация и примеры

- Исходный код
- Пример использования
- PR и детали реализации
1👍11
#yiisoftCsrf #МинорныйРелиз #Релиз

🎁 Yii CSRF Protection Library 2.2

• Добавлена мидлварь CsrfHeaderMiddleware, предотвращающая межсайтовую подделку запроса путём проверки пользовательского заголовка запроса. Может использоваться для AJAX/API маршрутов. Подробнее тут.

• Добавлена мидлварь CsrfTokenMiddleware, являющаяся копией CsrfMiddleware. CsrfMiddleware помечена устаревшей.

• Добавлен метод CsrfMiddleware::withSafeMethods(), позволяющий указать, какие HTTP-методы считать безопасными. По умолчанию это GET, HEAD и OPTIONS.
1🔥4👍31👾1
#yiisoftRequirements #МинорныйРелиз #Релиз

🎁 Yii Requirements Checker 1.1

• Добавлен метод RequirementsChecker::checkMaxExecutionTime() для проверки соответствия значения опции max_execution_time требуемому.

• Улучшена проверка корректности конфигурации.

• Улучшено оформление результатов.
👍5👾2
#yiisoftDbMigration #МинорныйРелиз #Релиз

🎁 Yii DB Migration 1.2

• Заменено использование устаревших методов Yii DB на актуальные.

• Минимальная версия PHP поднята до 8.1 и выполнен соответствующий рефакторинг.

После этого релиза начинается работа над адаптацией пакета к грядущей мажорной версии Yii DB.
👍12👾1
#yiisoftHtml #МинорныйРелиз #Релиз

🎁 Yii HTML 3.9

• В методах Html::addCssClass(), Tag::addClass() и Tag::class() добавлена поддержка типизированных перечислений в качестве CSS классов.
👍102👾1
#yiisoftFactory #МинорныйРелиз #Релиз

🎁 Yii Factory 1.3

• Добавлена «строгая» фабрика StrictFactory, которая позволяет создать экземпляры только тех объектов, для которых явно прописаны их определения (дефинишены).
👍5👾1
#yiisoftAssets #МажорныйРелиз #Релиз

🎁 Yii Assets 5.0

• Добавлен метод AssetManager::getUrl() вместо метода getAssetUrl(), который помечен как устаревший.

• Конфигурация di-web переименована в di, а также добавлена возможность установить паблишер в AssetManager через параметры.

• Добавлен коллектор для yiisoft/yii-debug.

• Минимальная версия PHP поднята до версии 8.1 и выполнен соответствующий рефакторинг.

• Уточнены psalm-типы у свойств класса AssetBundle.

• При попытке загрузить несуществующий бандл в AssetManager теперь бросается исключение.
👍11👾1
#yiisoftDefinitions #ПатчРелиз #Релиз

🎁 Yii Definitions 3.3.1

• Исправлено некорректное разрешение ParameterDefinition для опциональных параметров с объединёнными типами. Вместо значения по умолчанию, ранее всегда возвращался null.

• Удален лишний код в DefinitionStorage.
👍5👾1
#yiisoftView #МажорныйРелиз #Релиз

🎁 Yii View 12.0

• Добавлен метод ViewInterface::deepClone(), позволяющий клонировать объект вместе с состоянием (параметры, тема, локаль и т. д.). При обычном клонировании состояние остаётся общим для объектов.

• Добавлена возможность передавать null в методы withBasePath() и withContext() интерфейса ViewInterface.

• Добавлен сброс темы при вызове методов View::withClearedState() и WebView::withClearedState().
👍81👾1
🔥 #Новости

Мы подготовили дорожную карту Yii3.

🖼 Yii3 Roadmap

Карта показывает, что ещё осталось сделать до релиза. Документ планируется «живым» и будет обновляться по мере выполнения / детализации / изменения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👏4🎄2👾1
#yiisoftYiiViewRenderer #yiisoftYiiView #МинорныйРелиз #Релиз

🎁 Yii View Renderer 7.3

• Добавлена поддержка CsrfTokenMiddleware в CsrfViewInjection.

• Минимальная требуемая версия Yii View поднята до ^12.

• Исправлена проблема с протеканием стека при нескольких вызовах методов рендеринга во ViewRenderer.
👍3👾1
#yiisoftTranslator #МинорныйРелиз #Релиз

🎁 Yii Message Translator 3.1

SimpleMessageFormatter теперь бросает исключение InvalidArgumentException если в строке плюрализации пропущен ключ "one".

• Исправлено: использовалась некорректная локаль, когда категория переводов не задана и указана fallback-локаль.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
👍3🎄3👾2