#yiisoftI18n #ПатчРелиз #Релиз
🎁 Yii Internationalization Library 1.2.1
• Исправлена ошибка в
🎁 Yii Internationalization Library 1.2.1
• Исправлена ошибка в
LocaleProvider
: метод isDefaultLocale()
возвращал некорректное значение, если явно указать локаль, которая соответствует локали по умолчанию.#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
#yiisoftVarDumper #МинорныйРелиз #Релиз
🎁 Yii VarDumper 1.6
• В дампе анонимных функций удалены лишние пробелы.
• Реализован специализированный вывод дампа для объектов
🎁 Yii VarDumper 1.6
• В дампе анонимных функций удалены лишние пробелы.
• Реализован специализированный вывод дампа для объектов
DateTime
и DateTimeImmutable
. Теперь это выглядит так:new \DateTimeImmutable('2023-07-01T11:53:03.953+00:00', new \DateTimeZone('UTC'))
#yiisoftAuthJwt #ПатчРелиз #Релиз
🎁 Yii Auth JWT 2.0.1
• Явно прописаны зависимости
🎁 Yii Auth JWT 2.0.1
• Явно прописаны зависимости
psr/http-message
, yiisoft/http
и web-token/jwt-core
.#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 теперь вызываются в корневом пространстве имён, что в некоторых случаях даёт выигрыш по производительности.
#yiisoftMiddlewareDispatcher #МинорныйРелиз #Релиз
🎁 Yii Middleware Dispatcher 5.2.0
• Добавлена возможность использовать классы, реализующие PSR-интерфейс
• Добавлена возможность использовать классы с магическим методом
🎁 Yii Middleware Dispatcher 5.2.0
• Добавлена возможность использовать классы, реализующие PSR-интерфейс
RequestHandlerInterface
, в качестве мидлварей.• Добавлена возможность использовать классы с магическим методом
__invoke()
в качестве мидлварей.#yiisoftYiiMiddleware #ПатчРелиз #Релиз
🎁 Yii Middleware 1.0.2
• В мидлвари
• В мидлвари
• В мидлвари
🎁 Yii Middleware 1.0.2
• В мидлвари
CorsAllowAll
добавлен заголовок Access-Control-Expose-Headers: *
.• В мидлвари
Locale
проверка игнорирования запроса перенесена в начало.• В мидлвари
Locale
событие SetLocaleEvent
и изменение локали в генераторе URL теперь происходит до вызова последующих мидлварей.#yiisoftSockets
✨ Yii Sockets
Новый пакет для кода, который будет работать с различными типами сокетов (udp, tcp, …). Сейчас такой функционал частично реализован в Yii VarDumper и требуется в debug-пакетах.
Новый пакет для кода, который будет работать с различными типами сокетов (udp, tcp, …). Сейчас такой функционал частично реализован в Yii VarDumper и требуется в debug-пакетах.
Please open Telegram to view this post
VIEW IN TELEGRAM
#yiisoftVarDumper #МинорныйРелиз #Релиз
🎁 Yii VarDumper 1.7
• Добавлены обработчики вывода дампа. Из коробки доступны:
-
-
-
• Добавлена функция
🎁 Yii VarDumper 1.7
• Добавлены обработчики вывода дампа. Из коробки доступны:
-
EchoHandler
— вывод с помощью echo
в стандартный поток вывода stdout
(используется по умолчанию);-
StreamHandler
— вывод с помощью json_encode
в сокеты;-
CompositeHandler
— выводы сразу в несколько обработчиков.• Добавлена функция
dump()
(алиас к существующей ранее функции d()
).#yiisoftCacheFile #МинорныйРелиз #Релиз
🎁 Yii Cache File Handler 3.1
• В конструктор
• Метод
• Выполнен небольшой рефакторинг кода с использованием возможностей PHP 8.
🎁 Yii Cache File Handler 3.1
• В конструктор
FileCache
добавлен параметр $directoryMode
(по умолчанию, 0755
), позволяющий указать права на директорию с кэшем при её создании. • Метод
FileCache::withDirectoryMode()
помечен устаревшим.• Выполнен небольшой рефакторинг кода с использованием возможностей PHP 8.
❌ #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
и т. д.), которые могут быть использованы:• в параметрах экшена;
• внутри любого объекта при наполнении гидратором, в том числе и в моделях запроса или формы.
🍤 #Задачи
Потихоньку начали готовить шаблон 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
#yiisoftRouterComposerAttributeCollector
✨ Yii Router Composer Attribute Collector
Сделали репозиторий под новый пакет, который реализует сборку роутов из классов, размеченных с помощью PHP-атрибутов. Сборка будет производится с помощью пакета olvlvl/composer-attribute-collector.
Сами атрибуты будут расположены в основном пакете Yii Router.
Собственно это всё уже почти реализовано в PR#196. Помимо атрибутов в роутере также будет добавлен интерфейс
Сделали репозиторий под новый пакет, который реализует сборку роутов из классов, размеченных с помощью PHP-атрибутов. Сборка будет производится с помощью пакета olvlvl/composer-attribute-collector.
Сами атрибуты будут расположены в основном пакете Yii Router.
Собственно это всё уже почти реализовано в PR#196. Помимо атрибутов в роутере также будет добавлен интерфейс
RoutesProviderInterface
, реализации которого будут возвращать маршруты для роутера.Please open Telegram to view this post
VIEW IN TELEGRAM
#yiisoftStrings #МинорныйРелиз #Релиз
🎁 Yii Strings 2.3
• Добавлена поддержка Stringable-объектов в методе
🎁 Yii Strings 2.3
• Добавлена поддержка Stringable-объектов в методе
NumericHelper::normalize()
.#yiisoftAuth #МинорныйРелиз #Релиз
🎁 Yii Auth 3.1
• Добавлена мемоизация экземпляров
• Для свойства
• Исправлена ошибка с обработкой путей, содержащих не только ASCII-символы, в мидлвари
• Добавлен коллектор для
• Минимальная версия PHP повышена до 8.0 и выполнен соответствующий рефакторинг.
• Обновлена версия зависимости
• Явно прописана зависимость от
🎁 Yii Auth 3.1
• Добавлена мемоизация экземпляров
WildcardPattern
в мидлвари Authentication
.• Для свойства
$pattern
в методе HttpHeader::withPattern()
прописан атрибут Language
от JetBrains, что позволяет выводить значение этого свойства в PhpStorm c подсветкой синтаксиса и возможностью протестировать регулярное выражение.• Исправлена ошибка с обработкой путей, содержащих не только ASCII-символы, в мидлвари
Authentication
.• Добавлен коллектор для
yiisoft/yii-debug
.• Минимальная версия PHP повышена до 8.0 и выполнен соответствующий рефакторинг.
• Обновлена версия зависимости
yiisoft/http
.• Явно прописана зависимость от
psr/http-factory
.#yiisoftStrings #ПатчРелиз #Релиз
🎁 Yii Strings 2.3.1
• Добавлена мемоизация в
🎁 Yii Strings 2.3.1
• Добавлена мемоизация в
WildcardPatters
, что позволило в некоторых случаях повысить скорость обработки при повторных вызовах более чем в 2 раза.#yiisoftYiiEvent #МинорныйРелиз #Релиз
🎁 Yii Event 2.1
• В конфигурации пакета добавлена возможность через параметры указать имя группы конфигурации, содержащей события.
🎁 Yii Event 2.1
• В конфигурации пакета добавлена возможность через параметры указать имя группы конфигурации, содержащей события.
#yiisoftYiiConsole #ПатчРелиз #Релиз
🎁 Yii Console 2.1.1
• В конфигурации параметры перенесены из группы
🎁 Yii Console 2.1.1
• В конфигурации параметры перенесены из группы
params
в params-console
.#yiisoftDb #yiisoftDbPgsql #yiisoftDbMysql #yiisoftDbSqlite #yiisoftDbMssql #yiisoftDbOracle #МинорныйРелиз #Релиз
Минорные релизы Yii DB и адаптеров к основным СУБД с исправлением ошибок и несколькими улучшениями.
🎁 Yii Database 1.2
• Реализовано корректное экранирование имён общих табличных выражений (CTE).
• Выполнен рефакторинг классов
• Исправлены ошибки экранирования, выполняемого классом
- для SQL содержащего имена таблиц с префиксами;
- в случае, когда используются различные кавычки для имён таблиц и имён столбцов;
- в случае, когда используется подзапрос с алиасом.
• В методе
- исправлено приведение типа значения, если использовались строковые ключи в массиве значений
или имена колонок были указаны со скобками (например,
- исправлена ошибка, если порядок значений ассоциативного массива не совпадал с порядком колонок;
- изменён тип параметра
• Исправлена ошибка в методе
•
• Метод
• Тип
• Debug-классы адаптированы к последним изменениям в Yii Debug.
🎁 Yii DB PostgreSQL Driver 1.2
• Выполнен рефакторинг классов
• Исправлена конвертация для типов
• Исправлено получение имени автоинкремента колонки.
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB MySQL Driver 1.1
• Оптимизирован метод
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB SQLite Driver 1.1
• Добавлена поддержка типа
• Исправлены ошибки с внешними ключами:
- когда таблица имеет несколько внешних ключей;
- если для внешних ключей не указаны колонки соответствия (используются первичные ключи).
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB MSSQL Server Driver 1.1
• Исправлена ошибка для рекурсивных общих табличных выражений (CTE).
• Исправлен тип колонки
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB Oracle Driver 1.2
• Исправлена ошибка для рекурсивных общих табличных выражений (CTE).
• Улучшено определение типа колонки.
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
Минорные релизы Yii DB и адаптеров к основным СУБД с исправлением ошибок и несколькими улучшениями.
🎁 Yii Database 1.2
• Реализовано корректное экранирование имён общих табличных выражений (CTE).
• Выполнен рефакторинг классов
Quoter
и AbstractDMLQueryBuilder
.• Исправлены ошибки экранирования, выполняемого классом
Quoter
:- для SQL содержащего имена таблиц с префиксами;
- в случае, когда используются различные кавычки для имён таблиц и имён столбцов;
- в случае, когда используется подзапрос с алиасом.
• В методе
QueryBuilderInterface::batchInsert()
:- исправлено приведение типа значения, если использовались строковые ключи в массиве значений
или имена колонок были указаны со скобками (например,
{{%type}}.[[int_col]]
)- исправлена ошибка, если порядок значений ассоциативного массива не совпадал с порядком колонок;
- изменён тип параметра
$rows
с iterable|Generator
на iterable
.• Исправлена ошибка в методе
QueryBuilderInterface::upsert()
, возникающая в случае, если значение уникального столбца передано не первым значением.•
protected
-методы Command::getQueryBuilder()
и Command::internalExecute()
из адаптеров к конкретным СУБД были перенесены в AbstractPdoCommand
.• Метод
TableSchemaInterface::compositeForeignKey()
помечен устаревшим.• Тип
SchemaInterface::JSONB
помечен устаревшим, вместо него предлагается использовать тип SchemaInterface::JSON
.• Debug-классы адаптированы к последним изменениям в Yii Debug.
🎁 Yii DB PostgreSQL Driver 1.2
• Выполнен рефакторинг классов
JsonExpressionBuilder
, ArrayExpressionBuilder
и ColumnSchema
.• Исправлена конвертация для типов
bit
и varbit
из строки для передачи в БД.• Исправлено получение имени автоинкремента колонки.
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB MySQL Driver 1.1
• Оптимизирован метод
QueryBuilderInterface::insert()
для пустых значений, когда вставляются значения по умолчанию.• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB SQLite Driver 1.1
• Добавлена поддержка типа
json
.• Исправлены ошибки с внешними ключами:
- когда таблица имеет несколько внешних ключей;
- если для внешних ключей не указаны колонки соответствия (используются первичные ключи).
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB MSSQL Server Driver 1.1
• Исправлена ошибка для рекурсивных общих табличных выражений (CTE).
• Исправлен тип колонки
boolean
с типа БД tinyint
на более подходящий тип bit
.• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🎁 Yii DB Oracle Driver 1.2
• Исправлена ошибка для рекурсивных общих табличных выражений (CTE).
• Улучшено определение типа колонки.
• Выполнен рефакторинг с адаптацией к изменениям в Yii DB 1.2.
🔥 #Новости
Дмитрий Дерепко (xepozz) из core-команды Yii запустил личный телеграм-канал «Хэндлим тему», где планирует делиться полезной информацией по развитию себя, как профессионала в разработке, менеджменте и т. д.
🌿 https://t.me/handle_topic
Дмитрий Дерепко (xepozz) из core-команды Yii запустил личный телеграм-канал «Хэндлим тему», где планирует делиться полезной информацией по развитию себя, как профессионала в разработке, менеджменте и т. д.
🌿 https://t.me/handle_topic