Хроники 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
⚡️ Практически во всех пакетах добавлен ежедневный запуск тестов через GitHub Workflow.

#yiisoftCacheWincache #yiisoftView #yiisoftDi #yiisoftStrings #yiisoftRbacPhp #yiisoftYiiConsole #yiisoftCache #yiisoftDb #yiisoftRbac #yiisoftYiiAuthClient #yiisoftYiiGii #yiisoftViewTwig #yiisoftYiiWeb #yiisoftDbMssql #yiisoftDbOracle #yiisoftLog #yiisoftYiiDebug #yiisoftDbSqlite #yiisoftDbPgsql #yiisoftDbMysql #yiisoftEventDispatcher #yiisoftI18n #yiisoftYiiEvent #yiisoftYiiDbMigration #yiisoftValidator #yiisoftUser #yiisoftTranslatorMessageGettext #yiisoftSecurity #yiisoftMiddlewareDispatcher #yiisoftMutex #yiisoftNetworkUtilities #yiisoftProfiler #yiisoftProxy #yiisoftRequestBodyParser #yiisoftRouterFastroute #yiisoftInjector #yiisoftCacheApcu #yiisoftAuthJwt #yiisoftAuth #yiisoftAssets #yiisoftArrays #yiisoftAliases #yiisoftDemoApi #yiisoftDemo #yiisoftDataResponse #yiisoftData #yiisoftCsrf #yiisoftCookies #yiisoftConfig #yiisoftCacheMemcached #yiisoftCacheFile #yiisoftHttp #yiisoftHtml #yiisoftFiles #yiisoftFactory #yiisoftErrorHandler #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftLogTargetFile #yiisoftRequestModel #yiisoftRbacSpiralDb #yiisoftRateLimiter #yiisoftPackageTemplate #yiisoftMutexRedis #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle #yiisoftMutexFile #yiisoftMutexPdoMysql #yiisoftTranslatorFormatterSimple #yiisoftTranslatorFormatterIntl #yiisoftTranslatorExtractor #yiisoftTranslator #yiisoftTestSupport #yiisoftSession #yiisoftRouter #yiisoftRequirements #yiisoftTranslatorMessageDb #yiisoftTranslatorMessagePhp #yiisoftVarDumper #yiisoftWidget #yiisoftYiiBootstrap5 #yiisoftYiiBulma #yiisoftYiiCycle #yiisoftYiiDataview #yiisoftYiiDebugApi #yiisoftYiiDebugViewer #yiisoftMailerSwiftmailer #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftJson #yiisoftForm #yiisoftYiiWidgets #yiisoftYiiView #yiisoftYiiSwagger #yiisoftYiiSentry
#yiisoftYiiWeb #yiisoftHttp #МинорныйРелиз #yiisoftErrorHandler #МажорныйРелиз #Релиз

🎁 Yii HTTP 1.2.0
🎁
Yii Error Handler 2.0.0

Хелперы для работы преобразования строки с заголовками в более удобные для работы массивы перенесены из пакетов Yii Web (PR) и Yii Error Handler (PR) в пакет Yii HTTP (PR).

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

use Yiisoft\Http\HeaderValueHelper;

// Result: ['a' => '1', 'b' => '2']
HeaderValueHelper::getParameters('a=1;b=2');

// Result: ['value', 'a' => '1', 'b' => '2']
HeaderValueHelper::getValueAndParameters('value;a=1;b=2'));

// Result: [['value2', 'q' => 1.0], ['value1', 'q' => 0.2]]
HeaderValueHelper::getSortedValueAndParameters('value1;q=0.2,value2'));

// Result: ['text/xml', 'text/html']
HeaderValueHelper::getSortedAcceptTypes('text/html;q=0.2,text/xml;q=0.4'));

⚡️
#yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi #yiisoftAuth #yiisoftRequestBodyParser #yiisoftDataResponse #yiisoftCsrf #yiisoftRateLimiter #yiisoftCookies #yiisoftYiiRunnerWeb

Соответствующие изменения внесены в пакеты и приложения:

Шаблон веб-приложения (PR),
Шаблон API-приложения (PR),
Демо веб-приложения (PR),
Демо API-приложения (PR),
Yii Auth (PR),
Yii Request Body Parser (PR),
Yii Data Response (PR),
Yii CSRF Protection Library (PR),
Yii Rate Limiter Middleware (PR),
Yii Cookies (PR),
Yii Web Runner (PR).
#yiisoftErrorHandler #ПатчРелиз #Релиз

🎁 Yii Error Handler 2.0.1

• Исправили ошибку, возникающую при использовании JSON-рендеринга для ошибок, содержащих некорректные UTF-8 символы (PR).
#yiisoftErrorHandler #ПатчРелиз #Релиз

🎁 Yii Error Handler 2.0.2

• Исправлен JSON-рендеринг в случае, когда брошено исключение о рекурсии, для этого в функции json_encode заменили опцию JSON_THROW_ON_ERROR на JSON_PARTIAL_OUTPUT_ON_ERROR (PR).
👍1
⚡️ #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
⚡️ #yiisoftErrorHandler

Изменена логика прекращения работы скрипта в Yii Error Handler при возникновении исключения: вместо прямого вызова exit(1), теперь этот вызов регистрируется с помощью register_shutdown_function() (PR):

register_shutdown_function(static function (): void {
exit(1);
});


Подробнее о предпосылках такого решения можно почитать в PR #19401 в Yii2.
⚡️ #yiisoftErrorHandler

Несколько улучшений в Yii Error Handler (PR):
- добавили событие ApplicationError, возникающее после обработки ошибки перед завершением работы приложения;
- добавили восстановление текущей директории на момент возникновения события ApplicationError.
⚡️ #yiisoftErrorHandler

В пакете Yii Error Handler добавили поддержку markdown при выводе решений из дружественных исключений (PR).
🔥11
#yiisoftErrorHandler #МинорныйРелиз #Релиз

🎁 Yii Error Handler 2.1.0

• Добавлено событие ApplicationError, возникающее после обработки ошибки перед завершением работы приложения.

• Добавлено восстановление текущей директории на момент возникновения события ApplicationError.

• Добавлена поддержка markdown при выводе решений из дружественных исключений.

• Изменена логика прекращения работы скрипта при возникновении исключения: вместо прямого вызова exit(1), теперь этот вызов регистрируется с помощью register_shutdown_function().

• Добавлена поддержка psr/log версий ^2.0 и ^3.0 (PR).
👍3
⚡️ #yiisoftErrorHandler

В Yii Error Handler в doc-блок конструктора мидлвари ExceptionResponder добавили примеры параметра $exceptionMap (PR).
👍1
#yiisoftErrorHandler #ПатчРелиз #Релиз

🎁 Yii Error Handler 2.1.1

• Исправлена проблема с дублированием контента при генерации страницы с ошибкой.

• В phpdoc-блок конструктора мидлвари ExceptionResponder добавили примеры параметра $exceptionMap.

😎 Релиз подготовили Сергей Предводителев и Дмитрий Горяев.
👍2🔥1
#yiisoftErrorHandler #МажорныйРелиз #Релиз

🎁 Yii Error Handler 3.0

• Минимальная версия PHP поднята до 8.0.

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

• Явно прописаны транзитивные зависимости ext-mbstring, psr/http-factory и psr/http-server-handler.

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

🎁 Yii Error Handler 3.1

• Добавлен класс HeadersProvider, с помощью которого можно указать заголовки, которые будут добавлены в ответ с ошибкой.

• Реализовано автоматическое определение темы (светлая или тёмная).

• Добавлено композитное исключение CompositeException, используемое для вывода нескольких исключений одновременно.

• При возникновении ошибки во время обработки запроса в ErrorCatcher теперь отправляется событие ApplicationError.
👍14👾2
#yiisoftErrorHandler #МинорныйРелиз #Релиз

🎁 Yii Error Handler 3.2

• Добавлен вывод трассировки для ошибок PHP (ранее она выводилась только для исключений).

• В мидлвари ExceptionResponder добавлена возможность вызвать у ответа метод getBody(), чтобы можно было отловить и обработать исключения, которые могут при этом возникнуть.
👍9👾2
#yiisoftErrorHandler #ПатчРелиз #Релиз

🎁 Yii Error Handler 3.2.1

• Добавлена поддержка пакета psr/http-message версии ^2.0.
🔥5👾3
#yiisoftErrorHandler #МинорныйРелиз #Релиз

🎁 Yii Error Handler 3.3

• Добавлена кнопка для копирования cURL-запроса.

• Отсортированы заголовки в информации о запросе.

• Упрощён код, генерирующий сообщения для лога ошибок.

• В трейсе добавлена возможность посмотреть полный список аргументов.

• Добавлена возможность настройки глубины регистрации shutdown-функции, вызывающей exit(1), по умолчанию — 2.

• Мелкие исправления в интерфейсе.
👍4🔥1👾1
#yiisoftErrorHandler #МажорныйРелиз #Релиз

🎁 Yii Error Handler 4.0

• На странице ошибки добавлен вывод кода исключения.

• В трейсе добавлены аргументы, передаваемые в функции и методы.

• Генерация ответа в мидлвари ErrorCatcher вынесена в отдельную фабрику ThrowableResponseFactory.

ErrorHandler теперь передаёт в логгер только сообщение об ошибки вместо вывода всего исключения.

• В конструкторе HtmlRenderer добавлены отдельные параметры для всех настроек, а параметр $settings помечен как устаревший.

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

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

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

🎁 Yii Error Handler 4.1

• Добавлена новая фабрика ответа Yiisoft\ErrorHandler\ThrowableResponseFactory с поддержкой провайдеров рендереров.

Например, можно создать свой провайдер для запросов из библиотеки htmx:

final readonly class HtmxRendererProvider implements RendererProviderInterface
{
public function get(ServerRequestInterface $request): ?ThrowableRendererInterface
{
if ($request->hasHeader('Hx-Request')) {
return new PlainTextRenderer();
}

return null;
}
}


И добавить его в конфигурацию фабрики:

ThrowableResponseFactoryInterface::class => [
'class' => ThrowableResponseFactory::class,
'__construct()' => [
'rendererProvider' => DynamicReference::to(
static fn(ContainerInterface $container) => new CompositeRendererProvider(
new HeadRendererProvider(),
new HtmxRendererProvider(),
new ContentTypeRendererProvider($container)
)
)
],
],


Yiisoft\ErrorHandler\Factory\ThrowableResponseFactory помечен как устаревший.

• Рендереры ответа для исключений теперь добавляют в заголовки ответ тип содержимого.

• Исправлено отображение аргументов функции в тёмном режиме.
👍4👾1
#yiisoftErrorHandler #МинорныйРелиз #Релиз

🎁 Yii Error Handler 4.2

• В HtmlRenderer добавлен параметр $traceLink, позволяющий задать формат ссылки на файл в IDE. Параметр $traceHeaderLine помечен устаревшим.

• Добавлен PHP-атрибут #[UserException], которым можно помечать пользовательские исключения.

• Выполнен небольшой рефакторинг шаблонов.
👍3👾2