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

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

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

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

Улучшения в пакете Yii Form:

• в методе Form::csrf() добавили поддержку CSRF-токена в виде`Stringable`-объекта (PR);

• доработали виджет CheckboxList и добавили подробную документацию по нему (PR);

• доработали виджет RadioList и добавили подробную документацию по нему (PR);

• почистили код тестов (PR).
⚡️ #yiisoftTranslatorExtractor #yiisoftDemo

В пакете Yii Message Extractor изменили пространство имён с Yiisoft\Translator\Extractor на Yiisoft\TranslatorExtractor (PR).

Демо веб-приложения адаптировано к этим изменениям (PR).
#yiisoftArrays #МажорныйРелиз #Релиз

🎁 Yii Arrays 2.0.0

• Добавлен метод ArrayHelper::group(), группирующий элементы массива по заданному ключу.

• Финализированы классы ArrayHelper и ArraySorter.

• В методах ArrayHelper::map(), ArrayHelper::index(), ArrayHelper::group(), ArrayHelper::htmlEncode() и ArrayHelper::htmlDecode() добавлена поддержка iterable-объектов.

• Исправлена ошибка в методе ArrayHelper::getValue(): в некоторых случаях возвращалось некорректное значение, если требуемый ключ не существует в массиве, а значение по умолчанию является массивом.

—————

#yiisoftVarDumper #МинорныйРелиз #Релиз

🎁 Yii VarDumper 1.2.0

• Добавлен метод VarDumper::withOffset(), позволяющий задать строку, которая будет использоваться для вложенности кода.

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

—————

#yiisoftHtml #ПатчРелиз #Релиз

🎁 Yii HTML 2.2.1

• Добавлена поддержка yiisoft/arrays версии ^2.0.
⚡️ #yiisoftRouterFastroute

По согласованию RFC методы GET и HEAD идентичны, сервер должен поддерживать оба с одним и тем же URL-адресом. FastRoute не поддерживает это автоматически, но в адаптере Yii Router FastRoute Adapter мы реализовали это соглашение (PR).
⚡️ #yiisoftAppApi

Обновили инструкцию по установке шаблона API-приложения в readme (PR).
⚡️ #yiisoftRouter #yiisoftRouterFastroute #yiisoftDemo

Добавлена возможность генерации URL с учётом локали в роутере Yii Router (PR) и адаптере Yii Router FastRoute Adapter (PR).

Пример использования:

// Конфигурация генератора URL
$urlGenerator->setLocales(['en' => 'en-US', 'ru' => 'ru-RU', 'uz' => 'uz-UZ']);
$urlGenerator->setLocaleParameterName('_locale');

// Генерация URL
$urlGenerator->generate('test', ['_locale' => $locale]);

Это возможность роутера применена в демо веб-приложения (PR, PR).
⚡️ #yiisoftConfig

Большое обновление Yii Config (PR, PR).

• Конфигурации из vendor теперь НЕ копируются в приложение.

• Логика объединения конфигов:
- конфигурации объединяются послойно: окружение → приложение → вендор;
- между слоями разрешено переопределение;
- в рамках одного слоя запрещено использовать одинаковые ключи.

• Добавлены модификаторы объединения, задаваемые в конструкторе класса Config:
- RecursiveMerge::groups() — указанные группы будут объединяться рекурсивно,
- ReverseMerge::groups() — порядок ключей в итоговом массиве будет обратен порядку объединения,
- RemoveFromVendor::keys() — указанные ключи конфигурации не будут учитываться при получении конфигураций из vendor.

• Добавлена возможность использовать в качестве параметров любую группу конфигураций вместо params.

• Добавлена команда yii-config-copy для копирования конфигурационных файлов из вендора в приложение (при этом эти файлы автоматически в сборку НЕ попадают, это нужно сделать вручную).

• Добавлена команда yii-config-rebuild для обновления плана слияния.

• Удалён параметр output-directory, осталась только source-directory, задающая папку с конфигурациями.

• Удален весь интерактив, отслеживание изменений файлов и служебный файл dist.lock

• План слияния переименован в .merge-plan.php.

—————

⚡️ #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi

Приложения адаптированы к этому обновлению:

Шаблон веб-приложения (PR),
Шаблон API-приложения (PR),
Демо веб-приложения (PR),
Демо API-приложения (PR).
#yiisoftView #МажорныйРелиз #Релиз

🎁 Yii View 4.0.0

• Добавлен интерфейс ViewInterface, который реализуют классы View и WebView.

• Улучшено сообщение об ошибке при получении несуществующего блока или параметра из View или WebView.

• При изменении контекста с помощью методов View::withContext() или `WebView::withContext()`теперь сбрасывается список текущих генерируемых представлений.

—————

#yiisoftViewTwig #ПатчРелиз #Релиз

🎁 Yii View Twig Renderer 2.0.1

• Добавлена поддержка yiisoft/view версии ^4.0.
⚡️ #yiisoftConfig

В пакете Yii Config чтобы указать, что конфигурация используется без окружения, теперь можно передать как null, так и пустую строку (PR) + в readme добавлена информация об использовании пакета в PHAR-архивах (PR).
#yiisoftMailer #ПатчРелиз #Релиз

🎁 Yii Mailer Library 3.0.2

• Версия yiisoft/view обновлена до ^4.0 (PR).
⚡️ #yiisoftForm

В пакете Yii Form доработали виджеты и добавили подробную документацию по ним:

- DateTime (PR),
- DateTimeLocal (PR),
- Email (PR),
- Date (PR),
- File (PR),
- Range (PR),
- Number (PR),
- Password (PR).
⚡️ #yiisoftDemo

В демо веб-приложения добавлены примеры использования мидлвари Yiisoft\Yii\Web\Middleware\HttpCache для добавления HTTP-заголовков Last-Modified и ETag (PR).
⚡️ #yiisoftYiiCycle

В ветке 2.0 пакета Yii Cycle добавлена поддержка модификаторов схемы и пакета cycle/schema-renderer для генерации схемы (PR).
#yiisoftFriendlyException #МинорныйРелиз #Релиз

🎁 Yii Friendly Exception 1.1.0

• Дружественные исключения теперь всегда должны поддерживать разметку markdown (PR).
⚡️ #yiisoftDataDb

В пакете Yii Data DB добавлены фильтры и процессоры Between, ILike, Not и NotEquals, а также немного отрефакторен код (PR).
⚡️ #yiisoftDefinitions #yiisoftFactory #yiisoftDi

Изменение в Yii Definitions: теперь если обязательные nullable-параметры не удаётся разрешить, то выбрасывается исключение (PR).

Например, имеем класс:

final class Garage
{
public function __construct(?Car $car)
{
}
}


Если при создании класса Garage, не удастся создать объект Car для передачи его в конструктор, то будет брошено исключение. Ранее в этом случае в конструктор передавался null.

В соответствии с этим изменением исправлены тесты в Yii Factory (PR) и Yii Dependency Injection (PR).
⚡️ #yiisoftForm

В пакете Yii Form доработали виджеты и добавили подробную документацию по ним:

- URL (PR),
- Telephone (PR),
- Text (PR).
⚡️ #yiisoftYiiConsole

Доработали документацию Yii Console (PR):

- описали, как реализовать "ленивую" загрузку команд;

- описали, как добавить к командам алиасы;

- описали, как сделать скрытые команды;

- актуализировали примеры.
⚡️ #yiisoftForm

В пакете Yii Form доработали виджеты и добавили подробную документацию по ним:

- SubmitButton (PR),
- ResetButton (PR),
- Select (PR),
- Checkbox (PR),
- CheckboxList (PR),
- Range (PR),
- TextArea (PR),
- Error (PR),
- ErrorSummary (PR).

А также сделали следующие улучшения:

- в виджете Telephone добавлена поддержка числовых значений (PR),
- доработана документация по созданию форм (PR),
- подчищен код и документация (PR, PR, PR).
#yiisoftYiiConsole #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Console 1.0.0

Первый
релиз консоли, которую можно добавить в ваше приложение. "Под капотом" пакет использует консоль Symfony и добавляет к ней:

- команду serve для запуска встроенного в PHP сервера;

- события ApplicationStartup и ApplicationShutdown;

- поддержку дружественных исключений;

- стиль именования команд namespace/command;

- логирование ошибок;

- возможность добавления команд через конфигурацию Yii;

- "ленивую" загрузку команд через PSR-11 совместимый контейнер;

- набор предопределённых кодов выхода.

У пакета, как обычно, высокие технические показатели качества:
- 98% покрытие тестами;
- 82% MSI;
- 100% уровень покрытия типами;
- Psalm уровень 1.