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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #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.
⚡️ #yiisoftYiiCycle

Для консольных команд migrate/up и migrate/down в пакете Yii Cycle ORM добавлена поддержка опции --no-interaction (PR).
⚡️ #yiisoftWidget #yiisoftApp #yiisoftDemo

Добавлена новая группа конфигураций widgets, содержащая дефинишены для фабрики виджетов WidgetFactory из пакета Yii Widget (PR).

Группа также добавлена в приложения:
- шаблон веб-приложения (PR),
- демо веб-приложения (PR).
⚡️ #yiisoftLogTargetDb

Обновили зависимости в Yii Logging DB Target и немного подчистили конфигурации GitHub Actions (PR).
#yiisoftYiiRunner #yiisoftYiiRunnerConsole #yiisoftYiiRunnerWeb #yiisoftYiiRunnerRoadrunner

Создан новый пакет Yii Runner, в который вынесен общий код, необходимый для запуска любого приложения:

- класс BootstrapRunner, для запуска bootstrap-кода;

- фабрика ConfigFactory для создания экземпляра класса Yiisoft\Config\Config;

- класс ThrowableHandler, реализующий RequestHandlerInterface, это обёртка исключения для его выброса в мидлвари обработчика ошибок;

- интерфейс RunnerInterface для скрытия деталей запуска приложения.

Также созданы три новых пакета с реализациями интерфейса RunnerInterface для запуска приложений соответствующего типа:

- Yii Console Runner,
- Yii Web Runner,
- Yii RoadRunner Runner.
⚡️ #yiisoftDefinitions

Продолжаем дорабатывать Yii Definitions (PR, PR):

- ParameterDefinition поглотил ClassDefinition;
- выполнен рефакторинг DefinitionExtractor.