
Хроники Yii3
Описание процесса разработки фреймворка из первых рук 😎
Обсуждение:
https://t.me/yii3ru
Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0
Поддержать разработчиков:
https://opencollective.com/yiisoft
Recent Posts
#yiisoftRequestProvider#МинорныйРелиз#Релиз
🎁Yii Request Provider 1.2
• Добавлен класс
• Добавлен класс
• В
🎁Yii Request Provider 1.2
• Добавлен класс
RequestHeaderProvider
предоставляющий удобный доступ к заголовкам запроса:class MyClass
{
public function __construct(
private YiisoftRequestProviderRequestHeaderProvider $headers
) {}
public function go(): void
{
$this->headers->has('X-Foo');
$this->headers->get('X-Foo');
$this->headers->getLine('X-Foo');
$this->headers->getAll();
$this->headers->getFirstHeaders();
}
}
• Добавлен класс
RequestCookieProvider
вместо существующего RequestCookies
, который помечен как устаревший.• В
RequestCookieProvider
и RequestCookies
обращение к объекту запроса происходит в момент вызова методов get()
/ has()
, а не в конструкторе, как было ранее.🔥#Новости
Александр Макаров опубликовал новую статью на OpenCollective.
🖼 Yii News 2024
Итоги 2024 года для Yii1 / YIi2 / Yii3, изменения в команде и финансировании, релизы. Помимо новостей, статья также содержит большую подборку рекомендуемых для изучения статей.
Александр Макаров опубликовал новую статью на OpenCollective.
Итоги 2024 года для Yii1 / YIi2 / Yii3, изменения в команде и финансировании, релизы. Помимо новостей, статья также содержит большую подборку рекомендуемых для изучения статей.
#yiisoftTranslator#МинорныйРелиз#Релиз
🎁Yii Message Translator 3.1
•
• Исправлено: использовалась некорректная локаль, когда категория переводов не задана и указана fallback-локаль.
• Для опциональны nullable-параметров явно прописан тип с
🎁Yii Message Translator 3.1
•
SimpleMessageFormatter
теперь бросает исключение InvalidArgumentException
если в строке плюрализации пропущен ключ "one".• Исправлено: использовалась некорректная локаль, когда категория переводов не задана и указана fallback-локаль.
• Для опциональны nullable-параметров явно прописан тип с
null
для совместимости с PHP 8.4.#yiisoftYiiViewRenderer#yiisoftYiiView#МинорныйРелиз#Релиз
🎁Yii View Renderer 7.3
• Добавлена поддержка
• Минимальная требуемая версия Yii View поднята до
• Исправлена проблема с протеканием стека при нескольких вызовах методов рендеринга во
🎁Yii View Renderer 7.3
• Добавлена поддержка
CsrfTokenMiddleware
в CsrfViewInjection
.• Минимальная требуемая версия Yii View поднята до
^12
.• Исправлена проблема с протеканием стека при нескольких вызовах методов рендеринга во
ViewRenderer
.🔥#Новости
Мы подготовили дорожную карту Yii3.
🖼 Yii3 Roadmap
Карта показывает, что ещё осталось сделать до релиза. Документ планируется «живым» и будет обновляться по мере выполнения / детализации / изменения.
Мы подготовили дорожную карту Yii3.
Карта показывает, что ещё осталось сделать до релиза. Документ планируется «живым» и будет обновляться по мере выполнения / детализации / изменения.
#yiisoftView#МажорныйРелиз#Релиз
🎁Yii View 12.0
• Добавлен метод
• Добавлена возможность передавать
• Добавлен сброс темы при вызове методов
🎁Yii View 12.0
• Добавлен метод
ViewInterface::deepClone()
, позволяющий клонировать объект вместе с состоянием (параметры, тема, локаль и т. д.). При обычном клонировании состояние остаётся общим для объектов.• Добавлена возможность передавать
null
в методы withBasePath()
и withContext()
интерфейса ViewInterface
.• Добавлен сброс темы при вызове методов
View::withClearedState()
и WebView::withClearedState()
.#yiisoftDefinitions#ПатчРелиз#Релиз
🎁Yii Definitions 3.3.1
• Исправлено некорректное разрешение
• Удален лишний код в
🎁Yii Definitions 3.3.1
• Исправлено некорректное разрешение
ParameterDefinition
для опциональных параметров с объединёнными типами. Вместо значения по умолчанию, ранее всегда возвращался null
.• Удален лишний код в
DefinitionStorage
.#yiisoftAssets#МажорныйРелиз#Релиз
🎁Yii Assets 5.0
• Добавлен метод
• Конфигурация
• Добавлен коллектор для
• Минимальная версия PHP поднята до версии 8.1 и выполнен соответствующий рефакторинг.
• Уточнены psalm-типы у свойств класса
• При попытке загрузить несуществующий бандл в
🎁Yii Assets 5.0
• Добавлен метод
AssetManager::getUrl()
вместо метода getAssetUrl()
, который помечен как устаревший.• Конфигурация
di-web
переименована в di
, а также добавлена возможность установить паблишер в AssetManager
через параметры.• Добавлен коллектор для
yiisoft/yii-debug
.• Минимальная версия PHP поднята до версии 8.1 и выполнен соответствующий рефакторинг.
• Уточнены psalm-типы у свойств класса
AssetBundle
.• При попытке загрузить несуществующий бандл в
AssetManager
теперь бросается исключение.#yiisoftFactory#МинорныйРелиз#Релиз
🎁Yii Factory 1.3
• Добавлена «строгая» фабрика
🎁Yii Factory 1.3
• Добавлена «строгая» фабрика
StrictFactory
, которая позволяет создать экземпляры только тех объектов, для которых явно прописаны их определения (дефинишены).#yiisoftHtml#МинорныйРелиз#Релиз
🎁Yii HTML 3.9
• В методах
🎁Yii HTML 3.9
• В методах
Html::addCssClass()
, Tag::addClass()
и Tag::class()
добавлена поддержка типизированных перечислений в качестве CSS классов.#yiisoftDbMigration#МинорныйРелиз#Релиз
🎁Yii DB Migration 1.2
• Заменено использование устаревших методов Yii DB на актуальные.
• Минимальная версия PHP поднята до 8.1 и выполнен соответствующий рефакторинг.
После этого релиза начинается работа над адаптацией пакета к грядущей мажорной версии Yii DB.
🎁Yii DB Migration 1.2
• Заменено использование устаревших методов Yii DB на актуальные.
• Минимальная версия PHP поднята до 8.1 и выполнен соответствующий рефакторинг.
После этого релиза начинается работа над адаптацией пакета к грядущей мажорной версии Yii DB.
#yiisoftRequirements#МинорныйРелиз#Релиз
🎁Yii Requirements Checker 1.1
• Добавлен метод
• Улучшена проверка корректности конфигурации.
• Улучшено оформление результатов.
🎁Yii Requirements Checker 1.1
• Добавлен метод
RequirementsChecker::checkMaxExecutionTime()
для проверки соответствия значения опции max_execution_time
требуемому.• Улучшена проверка корректности конфигурации.
• Улучшено оформление результатов.
#yiisoftCsrf#МинорныйРелиз#Релиз
🎁Yii CSRF Protection Library 2.2
• Добавлена мидлварь
• Добавлена мидлварь
• Добавлен метод
🎁Yii CSRF Protection Library 2.2
• Добавлена мидлварь
CsrfHeaderMiddleware
, предотвращающая межсайтовую подделку запроса путём проверки пользовательского заголовка запроса. Может использоваться для AJAX/API маршрутов. Подробнее тут. • Добавлена мидлварь
CsrfTokenMiddleware
, являющаяся копией CsrfMiddleware
. CsrfMiddleware
помечена устаревшей.• Добавлен метод
CsrfMiddleware::withSafeMethods()
, позволяющий указать, какие HTTP-методы считать безопасными. По умолчанию это GET
, HEAD
и OPTIONS
.#yiisoftActions#yiisoftQueue
⚡️Обновление GitHub Action для PHPBench
Добавили крутую фичу в экшен для бенчмарков! Теперь он автоматически сравнивает производительность кода в PR с мастер-веткой.
🔍Что нового
- Экшен блокирует PR, если производительность ухудшилась
- По умолчанию используется сравнение
- Можно настроить свою функцию сравнения
🛠Использование
Уже работает в репозитории
📃Документация и примеры
- Исходный код
- Пример использования
- PR и детали реализации
⚡️Обновление GitHub Action для PHPBench
Добавили крутую фичу в экшен для бенчмарков! Теперь он автоматически сравнивает производительность кода в PR с мастер-веткой.
🔍Что нового
- Экшен блокирует PR, если производительность ухудшилась
- По умолчанию используется сравнение
mode(variant.time.avg)
с допуском ±5%- Можно настроить свою функцию сравнения
🛠Использование
Уже работает в репозитории
yiisoft/queue
, но можно использовать где угодно.📃Документация и примеры
- Исходный код
- Пример использования
- PR и детали реализации
#yiisoftForm#МинорныйРелиз#Релиз
🎁Yii Form 1.3
• В виджете
-
-
-
-
-
• В виджете
-
-
-
-
-
• Улучшена HTML верстка виджетов
🎁Yii Form 1.3
• В виджете
CheckboxList
добавлены методы:-
checkboxWrapTag()
,-
checkboxWrapAttributes()
,-
checkboxWrapClass()
,-
addCheckboxWrapClass()
,-
checkboxLabelWrap()
.• В виджете
RadioList
добавлены методы:-
radioWrapTag()
,-
radioWrapAttributes()
,-
radioWrapClass()
,-
addRadioWrapClass()
,-
radioLabelWrap()
.• Улучшена HTML верстка виджетов
CheckboxList
и RadioList
в темах Bootstrap 5.#yiisoftHtml#МинорныйРелиз#Релиз
🎁Yii HTML 3.8
• Добавлена возможность обернуть элемент в произвольный тег в виджетах
-
-
-
-
-
-
-
-
• Добавлены методы
• Добавлен опциональный параметр
• Добавлен psalm-тип
• Добавлен psalm-тип
• Минимальная версия PHP поднята до 8.1.
🎁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()
, позволяющие указать, нужно ли оборачивать поле тегом
или разместить его сбоку.• Добавлен опциональный параметр
wrap
в методе BooleanInputTag::label()
, указывающий, нужно ли оборачивать поле тегом
или разместить его сбоку.• Добавлен psalm-тип
non-empty-string
для результата метода Html::generateId()
.• Добавлен psalm-тип
non-empty-string|null
для параметра метода Tag::id()
.• Минимальная версия PHP поднята до 8.1.
#yiisoftRequestProvider#МинорныйРелиз#Релиз
🎁Yii Request Provider 1.1
• Добавлен класс
• В конфигурации пакета добавлен слушатель события
🎁Yii Request Provider 1.1
• Добавлен класс
RequestCookies
, предоставляющий удобный доступ к кукам запроса.• В конфигурации пакета добавлен слушатель события
BeforeMiddleware
из Yii Middleware Dispatcher, который автоматически запоминает объект запроса.🔥#Новости
Закрытый телеграм-чат с разработчиками Yii3
Ранее доступ в чат предоставлялся подписчикам на boosty и sponsr. Технически доступ в чат контролировали боты этих систем.
В субботу бот Boosty вдруг решил, что он самый главный, и удалил тех, кто не был подписчиком именно на Boosty. Нам такой вариант не подходит.
Теперь доступ в чат будет предоставляться после оплаты раз и навсегда.
Как вступить в закрытый чат?
1) Сделать пожертвование с помощью sponsr, boosty или Open Collective на сумму 2000 ₽ или больше.
2) Написать письмо на почту [email protected], где указать ваш логин в Telegram и приложить подтверждение оплаты (можно просто скриншот).
———
Удалённым участникам закрытого чата отправлена ссылка-приглашение. Если кому-то не пришло, отпишитесь в комментариях к этой заметке или на почту [email protected].
Закрытый телеграм-чат с разработчиками Yii3
Ранее доступ в чат предоставлялся подписчикам на boosty и sponsr. Технически доступ в чат контролировали боты этих систем.
В субботу бот Boosty вдруг решил, что он самый главный, и удалил тех, кто не был подписчиком именно на Boosty. Нам такой вариант не подходит.
Теперь доступ в чат будет предоставляться после оплаты раз и навсегда.
Как вступить в закрытый чат?
1) Сделать пожертвование с помощью sponsr, boosty или Open Collective на сумму 2000 ₽ или больше.
2) Написать письмо на почту [email protected], где указать ваш логин в Telegram и приложить подтверждение оплаты (можно просто скриншот).
———
Удалённым участникам закрытого чата отправлена ссылка-приглашение. Если кому-то не пришло, отпишитесь в комментариях к этой заметке или на почту [email protected].
❌#yiisoftMailerView
Пакет Yii Mailer View закрыт. В процессе разработки столкнулись с тем, что в текущем виде он практически бесполезен. Возможно, в будущем интеграция Yii Mailer и Yii View будет переосмыслена и разработка возобновится.
Пакет Yii Mailer View закрыт. В процессе разработки столкнулись с тем, что в текущем виде он практически бесполезен. Возможно, в будущем интеграция Yii Mailer и Yii View будет переосмыслена и разработка возобновится.
#yiisoftMailerSymfony#МажорныйРелиз#Релиз
🎁Yii Mailer Symfony Mailer Extension 4.0
• Пакет адаптирован к Yii Mailer 6:
- удалён класс
- в конструкторе мейлера добавлен параметр
- удалено использование
• Исправлено: для вложений не использовался ID файла.
• Изменения в конфигурации пакета:
- удалена конфигурация
- в параметрах удалён ключ
- в парамтерах ключ
• Минимальная версия PHP поднята до 8.1.
• Зависимость
🎁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
сделана опциональной.