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

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

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

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

🎁 Yii Definitions 3.0.1

• Исправлена ошибка: после добавления автоматического разрешения зависимостей при вызове методов перестал работать вызов несуществующих методов, которые отрабатывают через магический метод __call() (PR).
👍4
#yiisoftDefinitions #ПатчРелиз #Релиз

🎁 Yii Definitions 3.0.2

• Улучшили сообщения об ошибках при валидации дефинишенов (PR).
🔥2
⚡️ #yiisoftRbacRulesContainer #yiisoftDi #yiisoftDefinitions #yiisoftI18n

Обновили версию dev-зависимости rector/rector до ^0.15.2 в пакетах:

- Yii RBAC Rules Container (PR),
- Yii Dependency Injection (PR),
- Yii Definitions (PR),
- Yii Internationalization Library (PR).
👍3
#yiisoftDefinitions #МинорныйРелиз #Релиз

🎁 Yii Definitions 3.1

• Добавлен новый хелпер ArrayDefinitionHelper с методом merge(), который предназначен для объединения двух и более дефинишенов в виде массивов в один массив.

😎 Релиз подготовил Сергей Предводителев.
👍7
#yiisoftDefinitions #МинорныйРелиз #Релиз

🎁 Yii Definitions 3.2

• В методе DynamicReferencesArray::from() добавлена поддержка дефинишенов в любом допустимом формате, а не только в виде строк.

😎 Релиз подготовил Сергей Предводителев.
👍2
#yiisoftDefinitions #МинорныйРелиз #Релиз

🎁 Yii Definitions 3.3

• В определениях в формате массива добавлена возможность вызвать один и тот же метод несколько раз. Для этого в ключе после () нужно добавить любой постфикс. Например:

[
'class' => Collector::class,
'add()' => ['Alex'],
'add()-2' => ['Mike'],
]


• Исправлена фатальная ошибка, возникающая при использовании пересечений типов.
👍5🤔1🤯1👾1
#yiisoftDefinitions #ПатчРелиз #Релиз

🎁 Yii Definitions 3.3.1

• Исправлено некорректное разрешение ParameterDefinition для опциональных параметров с объединёнными типами. Вместо значения по умолчанию, ранее всегда возвращался null.

• Удален лишний код в DefinitionStorage.
👍5👾1
#yiisoftDefinitions #МинорныйРелиз #Релиз

🎁 Yii Definitions 3.4

• Улучшена валидация дефинишенов для свойств «только для чтения» и свойств с ассиметричной видимостью.

• Встроенные функции PHP теперь вызываются в корневом пространстве имён, что в некоторых случаях даёт выигрыш по производительности.

• Удалено «лишнее» условие в DefinitionValidator::validate(), которое выполнялось всегда.

• Явно отмечены свойства классов только для чтения.

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

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

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