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

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

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

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

В контейнере зависимостей Yii Dependency Injection добавили возможность включить «строгий» режим (PR), в этом режиме контейнер будет работать только с явно определёнными дефинишенами.

Строгий режим включается в конфигурации контейнера:

$config = ContainerConfig::create()->withStrictMode(true);
$container = new Container($config);

—————

Контейнер работает на базе Yii Definitions, в котором также добавили строгий режим для хранилища DefinitionStorage (PR).
⚡️ #yiisoftDefinitions

Несколько улучшений в Yii Definitions.

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

• Полностью покрыли код тестами и сделали небольшой рефакторинг, не затрагивающий публичный API (PR).
⚡️ #yiisoftDefinitions

Небольшое изменение синтаксиса определений сервисов в Yii Definitions: если в именованный variadic-параметр передать не массив, то будет брошено исключение (PR).
#yiisoftDefinitions #МажорныйРелиз #Релиз

🎁 Yii Definitions 1.0.0

Пакет предоставляет синтаксиc для описания способа создания и конфигурирования служб или объектов и включает в себя:

• Определения (Definitions), описывающие создаваемые службы или объекты (включает синтаксис, его валидацию и преобразование в объекты).

• Ссылки (Reference) и динамические ссылки (DynamicReference), указывающие на другие определения (включают дополнительную утилиту, позволяющую задать ссылки на несколько определений одновременно).

Сам по себе пакет не очень полезен для конечных пользователей фреймворка, но он является основой, на которой построены контейнер зависимостей Yii Dependency Injection и фабрика Yii Factory.

У пакета, как обычно, высокие технические показатели качества:
- 100% покрытие тестами;
- 92,9% MSI;
- 96,7% уровень покрытия типами;
- Psalm уровень 1.
#yiisoftDefinitions #ПатчРелиз #Релиз

🎁 Yii Definitions 1.0.1

• Добавлена поддержка объектов в значениях параметров по умолчанию (PR).

Возможность использовать объекты в качестве значений параметров по умолчанию появилась в PHP 8.1, например:

class Service
{
public function __construct(
private Logger $logger = new NullLogger(),
) {}
}


Теперь это поддерживается в пакете Yii Definitions, а следовательно и в фабрике Yii Factory и в DI-контейнере Yii Dependency Injection.
#yiisoftDefinitions #ПатчРелиз #Релиз

🎁 Yii Definitions 1.0.2

• При разрешении опциональной зависимости брошенные в процессе получения объекта из контейнера исключения теперь НЕ подавляются (PR, PR).

• Исправлено: в некоторых случаях при разрешении зависимостей c составными типами подавлялось исключение, возникающие если контейнер вернул значение не того типа (PR).
⚡️ #yiisoftAccess #yiisoftErrorHandler #yiisoftEventDispatcher #yiisoftFactory #yiisoftHttp #yiisoftI18n #yiisoftAliases #yiisoftJson #yiisoftProfiler #yiisoftInjector #yiisoftMailerSymfony #yiisoftMutex #yiisoftRateLimiter #yiisoftNetworkUtilities #yiisoftSession #yiisoftRouter #yiisoftStrings #yiisoftRouterFastroute #yiisoftRequestBodyParser #yiisoftTranslatorMessageGettext #yiisoftTranslatorExtractor #yiisoftTranslatorFormatterSimple #yiisoftTranslator #yiisoftTranslatorFormatterIntl #yiisoftTranslatorMessageDb #yiisoftUser #yiisoftVarDumper #yiisoftViewTwig #yiisoftYiiEvent #yiisoftTranslatorMessagePhp #yiisoftDataResponse #yiisoftCacheFile #yiisoftCookies #yiisoftCsrf #yiisoftAssets #yiisoftAuthJwt #yiisoftLog #yiisoftArrays #yiisoftYiiFilesystem #yiisoftYiiHttp #yiisoftYiiRunnerHttp #yiisoftLogTargetFile #yiisoftLogTargetEmail #yiisoftYiiRunnerRoadrunner #yiisoftSecurity #yiisoftYiiSwagger #yiisoftYiiSentry #yiisoftMutexFile #yiisoftMiddlewareDispatcher #yiisoftTestSupport #yiisoftYiiDebug #yiisoftYiiDebugViewer #yiisoftCacheApcu #yiisoftYiiDataview #yiisoftLogTargetSyslog #yiisoftAuth #yiisoftDefinitions #yiisoftRbacPhp #yiisoftDataDb #yiisoftData #yiisoftRequestModel #yiisoftDi #yiisoftConfig #yiisoftRbacRulesContainer

Продолжаем заменять рабочие процессы на переиспользуемые из Yii GitHub Actions:

- Yii Access (PR)
- Yii Error Handler (PR)
- Yii Event Dispatcher (PR)
- Yii Factory (PR)
- Yii HTTP (PR)
- Yii Internationalization Library (PR)
- Yii Aliases (PR)
- Yii JSON (PR)
- Yii Profiler (PR)
- Yii Injector (PR)
- Yii Mailer Symfony Mailer Extension (PR)
- Yii Mutex (PR)
- Yii Rate Limiter Middleware (PR)
- Yii Network Utilities (PR)
- Yii Session (PR)
- Yii Router (PR)
- Yii Strings (PR)
- Yii Router FastRoute Adapter (PR)
- Yii Request Body Parser (PR)
- Yii Translator gettext Message Storage (PR)
- Yii Message Extractor (PR)
- Yii Translator Simple Message Formatter (PR)
- Yii Message Translator (PR)
- Yii Translator intl Message Formatter (PR)
- Yii Translator DB Message Storage (PR)
- Yii User (PR)
- Yii VarDumper (PR)
- Yii View Twig Renderer (PR)
- Yii Event (PR)
- Yii Translator PHP Message Storage (PR)
- Yii Data Response (PR)
- Yii Cache File Handler (PR)
- Yii Cookies (PR)
- Yii CSRF Protection Library (PR)
- Yii Assets (PR)
- Yii Auth JWT (PR)
- Yii Logging Library (PR)
- Yii Arrays (PR)
- Yii Filesystem (PR)
- Yii HTTP Application (PR)
- Yii HTTP Runner (PR)
- Yii Logging File Target (PR)
- Yii Logging Email Target (PR)
- Yii RoadRunner Runner (PR)
- Yii Security (PR)
- Yii Swagger (PR)
- Yii Sentry (PR)
- Yii Mutex File Driver (PR)
- Yii Middleware Dispatcher (PR)
🤯6👍5
⚡️ #yiisoftDefinitions

Несколько изменений в Yii Definitions (PR):

• метод DefinitionValidator::validateArrayDefinition() сделан публичным;

• удалён метод ParameterDefinition::isBuiltin().
#yiisoftDefinitions #МажорныйРелиз #Релиз

🎁 Yii Definitions 2.0.0

• Метод DefinitionValidator::validateArrayDefinition() сделан публичным.

• Удалён метод ParameterDefinition::isBuiltin().

• В дефинишене ArrayDefinition метод setReferenceContainer() сделан иммутабельным и переименован в withReferenceContainer() (PR).
#yiisoftDefinitions #МинорныйРелиз #Релиз

🎁 Yii Definitions 2.1.0

• Добавлен метод Reference::optional(), создающий опциональную ссылку на запись в DI-контейнер. В случае, если в контейнере нет соответствующей записи, будет возвращён null вместо вызова исключения (PR).
👍4
⚡️ #yiisoftDefinitions

Несколько улучшений в Yii Definitions для определений заданных массивом (PR).

• Добавили возможность автоматического разрешения зависимостей в методах.

• Для аргументов переменной длины добавили поддержку ссылок (Reference и DynamicReference).
👍2🔥2
⚡️ #yiisoftDefinitions #yiisoftDi #yiisoftMiddlewareDispatcher

В CI добавили Rector, применили предлагаемые изменения, подняли минимальную версию PHP до ^8.0 и немного отрефакторили код в пакетах:
- Yii Definitions (PR),
- Yii Dependency Injection (PR),
- Yii Middleware Dispatcher (PR).
👍4
⚡️ #yiisoftDefinitions

Несколько улучшений в Yii Definitions.

• В валидаторе дефинишенов добавлена проверка корректности имён методов в массивах (PR).

• В CI добавлена проверка транзитивных зависимостей (PR).

• Удалён лишний код, который был актуален только для PHP 7.4 (PR).
👏2
#yiisoftDefinitions #МажорныйРелиз #Релиз

🎁 Yii Definitions 3.0.0

• Добавлено автоматическое разрешение зависимостей в методах.

• Для аргументов переменной длины (variadic) добавлена поддержка ссылок (Reference и DynamicReference).

• Изменён формат массива, возвращаемого методом DefinitionStorage::getBuildStack(): массив ID методов вместо массива, где ID методов были ключами, а значения всегда 1 (PR).

• В валидаторе дефинишенов добавлена проверка корректности имён методов в массивах.

• Исправлена ошибка: дефинишен в виде пустой строки считался валидным (PR).

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

• Удалён код, актуальный только для PHP 7.4 (PR).

• MSI пакета увеличен до 100% (PR).
🎉3🔥1