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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
Download Telegram
#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
🔥 #Новости

Александр Макаров опубликовал новую статью на OpenCollective.

🖼 Yii News 2024

Итоги 2024 года для Yii1 / YIi2 / Yii3, изменения в команде и финансировании, релизы. Помимо новостей, статья также содержит большую подборку рекомендуемых для изучения статей.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍134🔥2👏1👾1
#yiisoftRequestProvider #МинорныйРелиз #Релиз

🎁 Yii Request Provider 1.2

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

class MyClass
{
public function __construct(
private \Yiisoft\RequestProvider\RequestHeaderProvider $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(), а не в конструкторе, как было ранее.
1👍12👾5
#yiisoftCacheFile #МинорныйРелиз #Релиз

🎁 Yii Cache File Handler 3.2

• Директория для хранения файлов кэша теперь создаётся только в момент сохранения кэша. Ранее корневая директория создавалась при создании класса FileCache.

• После записи данных в кэш теперь сбрасывается кэш состояния файлов (см. clearstatcache()).

• Добавлена обработка состояния гонки при создание папки для файлов с кэшем.

• Для вложенных директорий теперь устанавливаются указанные в конфигурации права.
👍5👾1
#yiisoftFormModel #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii File Router 1.0

Первая стабильная версия роутера, основанного на соглашении о размещении контроллеров в определённых пространствах имён (похоже на Yii2). Роутер представляет собой PSR-15 мидлварь и может использоваться как самостоятельно, так и совместно с другим роутером.

Пример структуры:

src/
Controller/
User/
Profile/
IndexController.php
BlogController.php
UserController.php
IndexController.php


Работает это так:

GET /IndexController::index()
GET /userUserController::index()
POST /userUserController::create()
GET /user/blog/viewUser/BlogController::view()
GET /user/profileUser/Profile/IndexController::index()

Подробнее см. в документации.
👍17👾4🔥31
#yiisoftStrings #МинорныйРелиз #Релиз

🎁 Yii Strings 2.5

• Добавлен метод StringHelper::matchAnyRegex(), который фактически является фасадом для работы с классом CombinedRegexp.

• Уточнён psalm-тип метода StringHelper::base64UrlEncode().
👍9👾2
#yiisoftYiiConsole #МинорныйРелиз #Релиз

🎁 Yii Console 2.3

• Для команды serve добавлена опция --open, позволяющая запустить браузер по умолчанию после запуска сервера.

• В выводе команды serve добавлена информация о доступных опциях команды.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
👍8👏1👾1
#yiisoftSwagger #МинорныйРелиз #Релиз

🎁 Yii Swagger 2.2

• Добавлена поддержка yiisoft/assets версии ^5.0.

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

🎁 Yii Arrays 3.2

• В composer.json ограничение версии PHP изменено на ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0.

• Улучшены типы Psalm для ArrayHelper::getObjectVars(), ArrayableInterface, ArrayableTrait и ArrayAccessTrait.

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

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

ArrayHelper::getValue() теперь возвращает значение по умолчанию для ключа в виде пустого массива.

ArrayHelper::keyExists() теперь возвращает false для ключа в виде пустого массива.
👍3👾1
#yiisoftConfig #МинорныйРелиз #Релиз

🎁 Yii Config 1.6

• Добавлена composer-команда yii-config-info, которая выводит информацию о конфигурации приложения или пакета.

• Опцию config-plugin-file теперь можно использовать не только в приложении, но и в пакетах.

• Минимальная версия Composer повышена до 2.3.

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

• Ограничение версии PHP в composer.json изменено на ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0.

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

• Выполнен рефакторинг внутренних классов Options и ProcessHelper. Переработано чтение конфигурации.
👍4👾1