#yiisoftMiddlewareDispatcher #МинорныйРелиз #Релиз
🎁 Yii Middleware Dispatcher 5.1
• Добавлен композитный резолвер параметров
• Добавлена поддержка
• Улучшена производительность фабрики мидлварей.
😎 Релиз подготовили Сергей Предводителев и Сергей Шугаев.
🎁 Yii Middleware Dispatcher 5.1
• Добавлен композитный резолвер параметров
CompositeParametersResolver, позволяющий одновременно использовать несколько резолверов.• Добавлена поддержка
psr/http-message версии ^2.0.• Улучшена производительность фабрики мидлварей.
😎 Релиз подготовили Сергей Предводителев и Сергей Шугаев.
🔥6❤2
✨ #yiisoftProxyMiddleware
Создали репозиторий для пакета Yii Proxy Middleware.
В новый пакет переедут две мидлвари из Yii Middleware:
•
•
Создали репозиторий для пакета Yii Proxy Middleware.
В новый пакет переедут две мидлвари из Yii Middleware:
•
TrustedHeaderProtocolResolver,•
TrustedHostsNetworkResolver.👍6❤1
#yiisoftMiddleware #ПервыйРелиз #МажорныйРелиз #Релиз
🎁 Yii Middleware 1.0
Первая стабильная версия пакета Yii Middleware.
Содержит набор следующих middleware:
-
-
-
-
-
-
-
-
Покрытие юнит тестами - полное, статический анализ соответствует требованиям Psalm 1 уровня.
На финальной стадии разработки было решено middleware, связанные с прокси, вынести в отдельный пакет - Yii Proxy Middleware.
🎁 Yii Middleware 1.0
Первая стабильная версия пакета Yii Middleware.
Содержит набор следующих middleware:
-
CorsAllowAll. Добавляет CORS заголовки, снимающие все ограничения, в HTTP ответ.-
ForceSecureConnection. Перенаправляет небезопасные запросы с HTTP на HTTPS и добавляет заголовки в соответствии с политикой безопасности.-
HttpCache. Реализует кэширование на клиентской стороне с использованием HTTP заголовков Last-Modified и ETag.-
IpFilter. Добавляет доступ в соответствии с указанными IP диапазонами и отвечает кодом 403 (Forbidden) для всех остальных IP адресов.-
Locale. Поддерживает роутинг с включением локали и конфигурирует генератор URL.-
Redirect. Генерирует и добавляет заголовок Location в HTTP ответ.-
Subfolder. Поддерживает роутинг для случаев, когда точка входа приложения находится не в корневой папке.-
TagRequest. Помечает запрос случайным значением, которое в дальнейшем может быть использовано для его идентификации.Покрытие юнит тестами - полное, статический анализ соответствует требованиям Psalm 1 уровня.
На финальной стадии разработки было решено middleware, связанные с прокси, вынести в отдельный пакет - Yii Proxy Middleware.
🔥15👍9❤2👏2
#yiisoftYiiConsole #МинорныйРелиз #Релиз
🎁 Yii Console 2.1
• Улучшен вывод команды
• У команды
• Добавлена поддержка
• Добавлено кое-что ещё 😀
🎁 Yii Console 2.1
• Улучшен вывод команды
serve.• У команды
serve добавлена опция --xdebug, которая устанавливает переменные окружения XDEBUG_MODE=debug и XDEBUG_TRIGGER=yes.• Добавлена поддержка
: в качестве разделителя в имени команды. В следующей мажорной версии поддержка /, скорей всего, будет удалена.• Добавлено кое-что ещё 😀
🔥9❤2
🌿 #Полезное
На хабре опубликована статья Валерия Горбачева (один из ключевых разработчиков Yii DB) на основе одноимённого доклада на HighLoad++ 2022.
📗 Хождение по граблям PDO: что скрывают за собой современные PHP ORM
За приятной абстракцией скрывается множество нюансов и неочевидных штук. В деле абстрагирования БД всё крайне не просто.
На хабре опубликована статья Валерия Горбачева (один из ключевых разработчиков Yii DB) на основе одноимённого доклада на HighLoad++ 2022.
📗 Хождение по граблям PDO: что скрывают за собой современные PHP ORM
За приятной абстракцией скрывается множество нюансов и неочевидных штук. В деле абстрагирования БД всё крайне не просто.
🔥17❤2
#yiisoftYiiMiddleware #ПатчРелиз #Релиз
🎁 Yii Middleware 1.0.1
• Удалена зависимость
• Исправлены некорректные редиректы для GET-запросов в мидлвари
• Отключен поиск локали в куках, если не установлен параметр
🎁 Yii Middleware 1.0.1
• Удалена зависимость
yiisoft/network-utilities.• Исправлены некорректные редиректы для GET-запросов в мидлвари
Locale.• Отключен поиск локали в куках, если не установлен параметр
$cookieDuration в мидлвари Locale.🔥8❤2
#yiisoftI18n #МинорныйРелиз #Релиз
🎁 Yii Internationalization Library 1.2
• Добавлен провайдер локали
• Минимальная версия PHP поднята до
🎁 Yii Internationalization Library 1.2
• Добавлен провайдер локали
LocaleProvider.• Минимальная версия PHP поднята до
^8.0.👍6❤2
🛑 #yiisoftYiiGiiFrontend
Разработка Gii Frontend прекращена. Пакет отправлен в архив.
Фронт для Giiбудет реализован в Yii Development Panel.
Разработка Gii Frontend прекращена. Пакет отправлен в архив.
Фронт для Gii
👍6
#yiisoftLocaleMiddleware
✨ Yii Locale Middleware
Создан репозиторий под мидлварь
Планируется серьёзно переработать мидлварь и сделать её более настраиваемой и расширяемой. В связи с этим было принято решение выделить её в отдельный пакет.
Создан репозиторий под мидлварь
Locale, которая переедет сюда из пакета Yii Middleware.Планируется серьёзно переработать мидлварь и сделать её более настраиваемой и расширяемой. В связи с этим было принято решение выделить её в отдельный пакет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
#yiisoftI18n #ПатчРелиз #Релиз
🎁 Yii Internationalization Library 1.2.1
• Исправлена ошибка в
🎁 Yii Internationalization Library 1.2.1
• Исправлена ошибка в
LocaleProvider: метод isDefaultLocale() возвращал некорректное значение, если явно указать локаль, которая соответствует локали по умолчанию.👍3❤2
#yiisoftProxyMiddleware #FirstRelease #MajorRelease #Release
🎁 Proxy Middleware 1.0
Первая стабильная версия пакета Proxy Middleware. Пакет содержит middleware классы, связанные с прокси и реализующие PSR-15:
- TrustedHeaderProtocolResolver.
- TrustedHostsNetworkResolver.
Они были перенесены из пакета Yii Middleware и доработаны.
Вы можете использовать этот класс, если сервер находится за доверяемым балансировщиком нагрузки или прокси, которое постоянно устанавливает этот заголовок, игнорируя любые значения заголовков, переданных пользователем.
- IP.
- Протокол.
- Хост.
- Порт.
- Идентификатор IP - неизвестный или обфусцированный. Используется с RFC заголовком
Для forwarded заголовков можно использовать как одиночный заголовок
Типичная область применения - приложение за балансировщиком нагрузки.
Покрытие кода и MSI очень близко к 100%, статический анализ отвечает требованиям уровня 1 Psalm.
🎁 Proxy Middleware 1.0
Первая стабильная версия пакета Proxy Middleware. Пакет содержит middleware классы, связанные с прокси и реализующие PSR-15:
- TrustedHeaderProtocolResolver.
- TrustedHostsNetworkResolver.
Они были перенесены из пакета Yii Middleware и доработаны.
TrustedHeaderProtocolResolver
Устанавливает протокол в запросе сервера в соответствии со значением из специального доверяемого заголовка, такого, как например, X-Forwarded-Proto.Вы можете использовать этот класс, если сервер находится за доверяемым балансировщиком нагрузки или прокси, которое постоянно устанавливает этот заголовок, игнорируя любые значения заголовков, переданных пользователем.
TrustedHostsNetworkResolver
Сканирует всю цепочку соединения и извлекает данные из forwarded заголовков с учётом доверяемых IP. В дополнении к этому, структура всех элементов проходит тщательную валидацию, потому что данным из заголовков нельзя доверять. Извлекаются следующие данные:- IP.
- Протокол.
- Хост.
- Порт.
- Идентификатор IP - неизвестный или обфусцированный. Используется с RFC заголовком
Forwarded.Для forwarded заголовков можно использовать как одиночный заголовок
Forwarded, стандартизированный в RFC 7239, так и группы заголовков, предоставляющих данные отдельно.Типичная область применения - приложение за балансировщиком нагрузки.
Покрытие кода и MSI очень близко к 100%, статический анализ отвечает требованиям уровня 1 Psalm.
GitHub
GitHub - yiisoft/proxy-middleware: Middleware to set request parameters based on headers provided by proxy
Middleware to set request parameters based on headers provided by proxy - yiisoft/proxy-middleware
👍8🔥5❤1
#yiisoftVarDumper #МинорныйРелиз #Релиз
🎁 Yii VarDumper 1.6
• В дампе анонимных функций удалены лишние пробелы.
• Реализован специализированный вывод дампа для объектов
🎁 Yii VarDumper 1.6
• В дампе анонимных функций удалены лишние пробелы.
• Реализован специализированный вывод дампа для объектов
DateTime и DateTimeImmutable. Теперь это выглядит так:new \DateTimeImmutable('2023-07-01T11:53:03.953+00:00', new \DateTimeZone('UTC'))👍9❤2🔥1
#yiisoftAuthJwt #ПатчРелиз #Релиз
🎁 Yii Auth JWT 2.0.1
• Явно прописаны зависимости
🎁 Yii Auth JWT 2.0.1
• Явно прописаны зависимости
psr/http-message, yiisoft/http и web-token/jwt-core.🔥5👍2
#yiisoftStrings #МинорныйРелиз #Релиз
🎁 Yii Strings 2.2
• Добавлен класс
Подробнее о концепции можно почитать в блоге Никиты Попова: Fast request routing using regular expressions.
• В
• В методе
-
• Минимальная версия PHP поднята до 8.0 и выполнен рефакторинг кода.
• Встроенные функции PHP теперь вызываются в корневом пространстве имён, что в некоторых случаях даёт выигрыш по производительности.
🎁 Yii Strings 2.2
• Добавлен класс
CombinedRegexp, позволяющий оптимизировать сопоставление с несколькими регулярными выражениями. Также реализован класс MemoizedCombinedRegexp, работающий аналогично, но дополнительно кэширующий результаты сопоставления.Подробнее о концепции можно почитать в блоге Никиты Попова: Fast request routing using regular expressions.
• В
StringHelper добавлены методы trim(), ltrim() и rtrim(), позволяющие удалить все пробельные символы Unicode в начале/конце строки.• В методе
Inflector::toSnakeCase() добавлен булев параметр $strict, меняющий поведение метода:-
true (по умолчанию)createMyDTO → create_my_d_t_o
- false
createMyDTO → create_my_dto
В следующей мажорной версии пакета значение по умолчанию будет изменено на false.• Минимальная версия PHP поднята до 8.0 и выполнен рефакторинг кода.
• Встроенные функции PHP теперь вызываются в корневом пространстве имён, что в некоторых случаях даёт выигрыш по производительности.
🔥10❤1👍1
#yiisoftMiddlewareDispatcher #МинорныйРелиз #Релиз
🎁 Yii Middleware Dispatcher 5.2.0
• Добавлена возможность использовать классы, реализующие PSR-интерфейс
• Добавлена возможность использовать классы с магическим методом
🎁 Yii Middleware Dispatcher 5.2.0
• Добавлена возможность использовать классы, реализующие PSR-интерфейс
RequestHandlerInterface, в качестве мидлварей.• Добавлена возможность использовать классы с магическим методом
__invoke() в качестве мидлварей.🔥3👍1
#yiisoftYiiMiddleware #ПатчРелиз #Релиз
🎁 Yii Middleware 1.0.2
• В мидлвари
• В мидлвари
• В мидлвари
🎁 Yii Middleware 1.0.2
• В мидлвари
CorsAllowAll добавлен заголовок Access-Control-Expose-Headers: *.• В мидлвари
Locale проверка игнорирования запроса перенесена в начало.• В мидлвари
Locale событие SetLocaleEvent и изменение локали в генераторе URL теперь происходит до вызова последующих мидлварей.🔥2👏1
#yiisoftSockets
✨ Yii Sockets
Новый пакет для кода, который будет работать с различными типами сокетов (udp, tcp, …). Сейчас такой функционал частично реализован в Yii VarDumper и требуется в debug-пакетах.
Новый пакет для кода, который будет работать с различными типами сокетов (udp, tcp, …). Сейчас такой функционал частично реализован в Yii VarDumper и требуется в debug-пакетах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤🔥2
#yiisoftVarDumper #МинорныйРелиз #Релиз
🎁 Yii VarDumper 1.7
• Добавлены обработчики вывода дампа. Из коробки доступны:
-
-
-
• Добавлена функция
🎁 Yii VarDumper 1.7
• Добавлены обработчики вывода дампа. Из коробки доступны:
-
EchoHandler — вывод с помощью echo в стандартный поток вывода stdout (используется по умолчанию);-
StreamHandler — вывод с помощью json_encode в сокеты;-
CompositeHandler — выводы сразу в несколько обработчиков.• Добавлена функция
dump() (алиас к существующей ранее функции d()).🔥6
#yiisoftCacheFile #МинорныйРелиз #Релиз
🎁 Yii Cache File Handler 3.1
• В конструктор
• Метод
• Выполнен небольшой рефакторинг кода с использованием возможностей PHP 8.
🎁 Yii Cache File Handler 3.1
• В конструктор
FileCache добавлен параметр $directoryMode (по умолчанию, 0755), позволяющий указать права на директорию с кэшем при её создании. • Метод
FileCache::withDirectoryMode() помечен устаревшим.• Выполнен небольшой рефакторинг кода с использованием возможностей PHP 8.
🔥4👍1
❌ #yiisoftRequestModel
Пакет Yii Request Model закрыт.
Предыстория
В пакетах Yii Request Model и Yii Form существовал функционал для создания и наполнения объектов. Каждый из пакетов делал это по своему.
В связи с этим в рамках отдельного пакета был написан Yii Hydrator, который умеет создавать и наполнять объекты. Также гидратор поддерживает настраиваемое приведение типов, PHP-атрибуты и разрешение зависимостей.
Дополнительно в отдельном пакете Yii Validating Hydrator создан валидирующий гидратор. По факту это декоратор над обычным гидратором, который выполняет валидацию после создания и наполнения объекта.
И, наконец, написан пакет Yii Input HTTP, который предоставляет дополнения к Yii Hydrator и Yii Middleware Dispatcher:
• модель запроса;
• атрибуты для гидратора, позволяющие получать данные из объекта запроса (
• возможность использовать атрибуты гидратора для наполнения параметров в экшенах.
Таким образом функционал пакета Yii Request Model распределился по новым пакетам. А также мы получили PHP-атрибуты (
• в параметрах экшена;
• внутри любого объекта при наполнении гидратором, в том числе и в моделях запроса или формы.
Пакет Yii Request Model закрыт.
Предыстория
В пакетах Yii Request Model и Yii Form существовал функционал для создания и наполнения объектов. Каждый из пакетов делал это по своему.
В связи с этим в рамках отдельного пакета был написан Yii Hydrator, который умеет создавать и наполнять объекты. Также гидратор поддерживает настраиваемое приведение типов, PHP-атрибуты и разрешение зависимостей.
Дополнительно в отдельном пакете Yii Validating Hydrator создан валидирующий гидратор. По факту это декоратор над обычным гидратором, который выполняет валидацию после создания и наполнения объекта.
И, наконец, написан пакет Yii Input HTTP, который предоставляет дополнения к Yii Hydrator и Yii Middleware Dispatcher:
• модель запроса;
• атрибуты для гидратора, позволяющие получать данные из объекта запроса (
Query, Body, UploadedFiles и т. д.);• возможность использовать атрибуты гидратора для наполнения параметров в экшенах.
Таким образом функционал пакета Yii Request Model распределился по новым пакетам. А также мы получили PHP-атрибуты (
Query, Body, UploadedFiles и т. д.), которые могут быть использованы:• в параметрах экшена;
• внутри любого объекта при наполнении гидратором, в том числе и в моделях запроса или формы.
🔥8🎉2❤1🤔1😢1🍾1
🍤 #Задачи
Потихоньку начали готовить шаблон API-приложения (yiisoft/app-api) к релизу. Конечно, предварительно нужно зарелизить ещё некоторые пакеты (отладка, гидратор и др.), но это не мешает вести работу и по шаблону.
Шаблон API-приложения, скорей всего, будет первым выпущенным шаблоном Yii3. Это будет ещё не большой релиз Yii3, но где-то рядом 😎
Есть несколько не сложных задач, с которыми вы при желании можете помочь.
⭐️ PHP Code Style Fixer в шаблоне API-приложения
yiisoft/app-api#184
Сейчас для автоматизации стиля кода используется StyleCI, но в шаблоне приложения хочется уйти от использования стороннего сервиса и заменить его на PHP CS Fixer. Нужно интегрировать фиксер в шаблон и добавить соответствующий GitHub экшн.
⭐️ Уровень Psalm в шаблоне API-приложения
yiisoft/app-api#182
Сейчас уровень 6й, нужно поднять до 1го, но это можно делать поэтапно и поднять до 5 или 4 — тоже будет полезно.
⭐️ Файл плана слияния конфигураций (Merge plan file)
yiisoft/config#121
В документации Yii Config нужно добавить несколько вещей. Первое, информацию о том, что файл плана слияния обновляется, в том числе, и при выполнении команды
Потихоньку начали готовить шаблон API-приложения (yiisoft/app-api) к релизу. Конечно, предварительно нужно зарелизить ещё некоторые пакеты (отладка, гидратор и др.), но это не мешает вести работу и по шаблону.
Шаблон API-приложения, скорей всего, будет первым выпущенным шаблоном Yii3. Это будет ещё не большой релиз Yii3, но где-то рядом 😎
Есть несколько не сложных задач, с которыми вы при желании можете помочь.
yiisoft/app-api#184
Сейчас для автоматизации стиля кода используется StyleCI, но в шаблоне приложения хочется уйти от использования стороннего сервиса и заменить его на PHP CS Fixer. Нужно интегрировать фиксер в шаблон и добавить соответствующий GitHub экшн.
yiisoft/app-api#182
Сейчас уровень 6й, нужно поднять до 1го, но это можно делать поэтапно и поднять до 5 или 4 — тоже будет полезно.
yiisoft/config#121
В документации Yii Config нужно добавить несколько вещей. Первое, информацию о том, что файл плана слияния обновляется, в том числе, и при выполнении команды
composer install. Второе, предупреждение о том, что файл плана слияния должен быть добавлен в .gitignore.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍2