⚡️ #yiisoftDocs #yiisoftRequestModel
Актуализировано описание в части работы с роутингом в пакете Yii Request Model (PR) и документации (PR).
Актуализировано описание в части работы с роутингом в пакете Yii Request Model (PR) и документации (PR).
⚡️ #yiisoftRouter
Готовим Yii Router к релизу: подняли уровень psalm до 1 (PR) и удалили интерфейсы
Удалённые интерфейсы вводились для разделения контекстов использования (конфигурирование и получение данных), но практика показала, что это было неудачное решение (типизация по факту некорректная + интерфейсы вводят в заблуждение). Но, чтобы всё-таки повысить удобство публичного API, мы объединили методы, которые требуются только внутри пакета, и пометили их как
• в классе
• в классе
• в классе
• метод
—————
⚡️ #yiisoftRouterFastroute #yiisoftRequestModel #yiisoftYiiDebugApi #yiisoftYiiDataview #yiisoftDocs #yiisoftDemo #yiisoftApp #yiisoftDemoApi
Соответствующие изменения были внесены в документацию (PR), приложения и пакеты:
- Yii Router FastRoute Adapter (PR),
- Yii Request Model (PR, PR),
- Yii Debug API (PR),
- Yii Data Widgets (PR),
- Шаблон веб-приложения (PR),
- Демо веб-приложения (PR),
- Демо API-приложения (PR).
Готовим Yii Router к релизу: подняли уровень psalm до 1 (PR) и удалили интерфейсы
CurrentRouteInterface.php
, GroupInterface
, RouteInterface
, RouteParametersInterface
(PR).Удалённые интерфейсы вводились для разделения контекстов использования (конфигурирование и получение данных), но практика показала, что это было неудачное решение (типизация по факту некорректная + интерфейсы вводят в заблуждение). Но, чтобы всё-таки повысить удобство публичного API, мы объединили методы, которые требуются только внутри пакета, и пометили их как
@internal
:• в классе
Route
методы getDispatcherWithMiddlewares()
, getName()
, getMethods()
, getPattern()
, getHost()
, isOverride()
, getDefaults()
, hasMiddlewares()
, getDispatcherWithMiddlewares()
объединены в один getData()
;• в классе
Group
методы getCorsMiddleware()
, hasCorsMiddleware()
, getMiddlewareDefinitions()
, getItems()
, getPrefix()
, getNamePrefix()
, getHost()
объединены в один getData()
;• в классе
CurrentRoute
методы setRoute()
и setArguments()
объединены в один setRouteWithArguments()
;• метод
CurrentRoute::setUri()
также помечен как @internal
.—————
⚡️ #yiisoftRouterFastroute #yiisoftRequestModel #yiisoftYiiDebugApi #yiisoftYiiDataview #yiisoftDocs #yiisoftDemo #yiisoftApp #yiisoftDemoApi
Соответствующие изменения были внесены в документацию (PR), приложения и пакеты:
- Yii Router FastRoute Adapter (PR),
- Yii Request Model (PR, PR),
- Yii Debug API (PR),
- Yii Data Widgets (PR),
- Шаблон веб-приложения (PR),
- Демо веб-приложения (PR),
- Демо API-приложения (PR).
⚡️ #yiisoftRequestModel
Несколько изменений в пакете Yii Request Model (PR):
- удалили интерфейс
- перенесли конфигурацию пакета из группы
Несколько изменений в пакете Yii Request Model (PR):
- удалили интерфейс
ValidatableModelInterface
, использовав вместо него интерфейс Yiisoft\Validator\RulesProviderInterface
;- перенесли конфигурацию пакета из группы
common
в группу web
.👍2
⚡️ #yiisoftRequestModel #yiisoftDemoApi
В пакете Yii Request Model удалили конфигурацию фабрики мидлварей (PR). Подразумевается, что она должна конфигурироваться в приложении. В демо API-приложения, где используется Yii Request Model так и сделали (PR).
В пакете Yii Request Model удалили конфигурацию фабрики мидлварей (PR). Подразумевается, что она должна конфигурироваться в приложении. В демо API-приложения, где используется Yii Request Model так и сделали (PR).
⚡️ #yiisoftRequestModel #yiisoftForm
К последним изменениям в Yii Validator адаптировали Yii Request Model (PR) и Yii Form (PR).
К последним изменениям в Yii Validator адаптировали Yii Request Model (PR) и Yii Form (PR).
⚡️ #yiisoftRequestModel
В пакете Yii Request Model исправили ошибку, возникавшую при вызове метода
В пакете Yii Request Model исправили ошибку, возникавшую при вызове метода
RequestValidationException::getFirstErrors()
(PR).⚡️ #yiisoftValidator #yiisoftForm #yiisoftRequestModel #yiisoftDemo
Большое обновление Yii Validator (PR).
• Добавлена поддержка атрибутов PHP. Выглядит это приблизительно так:
• В связи с переходом на PHP 8.0 и возможностью использовать именованные аргументы создание правил через статическую фабрику
• Правило
• Правило
• Выполнен внутренний рефакторинг (переименование переменных, небольшие изменения в коде и прочее).
Необходимые изменения (в том числе поднята минимальная версия PHP до 8.0) внесены в пакеты и приложения, зависящие от валидатора:
- Yii Form (PR),
- Yii Request Model (PR),
- Демо веб-приложения (PR).
Большое обновление Yii Validator (PR).
• Добавлена поддержка атрибутов PHP. Выглядит это приблизительно так:
final class Point• Минимальная версия PHP поднята до 8.0.
{
#[HasOne(Coordinates::class)]
private $coordinates;
#[Number(min: -10, max: 10)]
private int $x;
#[Number(min: -10, max: 10)]
private int $y;
}
• В связи с переходом на PHP 8.0 и возможностью использовать именованные аргументы создание правил через статическую фабрику
::rule()
утратило смысл. Теперь правила создаются классическим способом через конструктор (new MyRule()
).• Правило
Each
теперь принимает в качестве правил iterable-значение вместо RuleSet
.• Правило
MatchRegularExpression
переименовано в Regex
.• Выполнен внутренний рефакторинг (переименование переменных, небольшие изменения в коде и прочее).
Необходимые изменения (в том числе поднята минимальная версия PHP до 8.0) внесены в пакеты и приложения, зависящие от валидатора:
- Yii Form (PR),
- Yii Request Model (PR),
- Демо веб-приложения (PR).
👍3🔥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)
Продолжаем заменять рабочие процессы на переиспользуемые из 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
⚡️ #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftHttp #yiisoftI18n #yiisoftLog #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftMailerSymfony #yiisoftMiddlewareDispatcher #yiisoftMutexPdoOracle #yiisoftMutexRedis #yiisoftRbac #yiisoftRbacDb #yiisoftRbacPhp #yiisoftRequestBodyParser #yiisoftRateLimiter #yiisoftProxy #yiisoftProfiler #yiisoftMutexPdoPgsql #yiisoftMutexPdoMysql #yiisoftMailerSwiftmailer #yiisoftHtml #yiisoftRequestModel #yiisoftRequirements #yiisoftRouter #yiisoftRouterFastroute #yiisoftSession #yiisoftStrings #yiisoftTestSupport #yiisoftTranslator #yiisoftTranslatorMessageDb #yiisoftUser #yiisoftView #yiisoftViewTwig #yiisoftWidget #yiisoftYiiConsole
Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:
- Yii Mailer Library (PR)
- Yii Logging Syslog Target (PR)
- Yii HTTP (PR)
- Yii Internationalization Library (PR)
- Yii Logging Library (PR)
- Yii Logging DB Target (PR)
- Yii Logging Email Target (PR)
- Yii Mailer Symfony Mailer Extension (PR)
- Yii Middleware Dispatcher (PR)
- Yii Mutex Oracle PDO Driver (PR)
- Yii Mutex Redis Driver (PR)
- Yii Role-Based Access Control (PR)
- Yii RBAC Database (PR)
- Yii RBAC PHP File Storage (PR)
- Yii Request Body Parser (PR)
- Yii Rate Limiter Middleware (PR)
- Yii Proxy (PR)
- Yii Profiler (PR)
- Yii Mutex PostgreSQL PDO Driver (PR)
- Yii Mutex MySQL PDO Driver (PR)
- Yii Mailer SwiftMailer Extension (PR)
- Yii HTML (PR)
- Yii Request Model (PR)
- Yii Requirements Checker (PR)
- Yii Router (PR)
- Yii Router FastRoute Adapter (PR)
- Yii Session (PR)
- Yii Strings (PR)
- Yii Test Support (PR)
- Yii Message Translator (PR)
- Yii Translator DB Message Storage (PR)
- Yii User (PR)
- Yii View (PR)
- Yii View Twig Renderer (PR)
- Yii Widget (PR)
- Yii Console (PR)
Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:
- Yii Mailer Library (PR)
- Yii Logging Syslog Target (PR)
- Yii HTTP (PR)
- Yii Internationalization Library (PR)
- Yii Logging Library (PR)
- Yii Logging DB Target (PR)
- Yii Logging Email Target (PR)
- Yii Mailer Symfony Mailer Extension (PR)
- Yii Middleware Dispatcher (PR)
- Yii Mutex Oracle PDO Driver (PR)
- Yii Mutex Redis Driver (PR)
- Yii Role-Based Access Control (PR)
- Yii RBAC Database (PR)
- Yii RBAC PHP File Storage (PR)
- Yii Request Body Parser (PR)
- Yii Rate Limiter Middleware (PR)
- Yii Proxy (PR)
- Yii Profiler (PR)
- Yii Mutex PostgreSQL PDO Driver (PR)
- Yii Mutex MySQL PDO Driver (PR)
- Yii Mailer SwiftMailer Extension (PR)
- Yii HTML (PR)
- Yii Request Model (PR)
- Yii Requirements Checker (PR)
- Yii Router (PR)
- Yii Router FastRoute Adapter (PR)
- Yii Session (PR)
- Yii Strings (PR)
- Yii Test Support (PR)
- Yii Message Translator (PR)
- Yii Translator DB Message Storage (PR)
- Yii User (PR)
- Yii View (PR)
- Yii View Twig Renderer (PR)
- Yii Widget (PR)
- Yii Console (PR)
🔥4👍3
⚡️ #yiisoftValidator
Сделали важный рефакторинг в Yii Validator, разделив правила на собственно само правило и обработчик правила (PR).
Такой подход позволит автоматически разрешать зависимости обработчика правила (например, правило, которому для проверки требуется подключение к БД).
#yiisoftForm #yiisoftRequestModel #yiisoftYiiMiddleware #yiisoftYiiDebugApi #yiisoftDemoApi
Адаптировали к изменениям в валидаторе пакеты и приложения:
- Yii Form (PR)
- Yii Request Model (PR)
- Yii Middleware (PR)
- Yii Debug API (PR)
- Демо API-приложения (PR)
Сделали важный рефакторинг в Yii Validator, разделив правила на собственно само правило и обработчик правила (PR).
Такой подход позволит автоматически разрешать зависимости обработчика правила (например, правило, которому для проверки требуется подключение к БД).
#yiisoftForm #yiisoftRequestModel #yiisoftYiiMiddleware #yiisoftYiiDebugApi #yiisoftDemoApi
Адаптировали к изменениям в валидаторе пакеты и приложения:
- Yii Form (PR)
- Yii Request Model (PR)
- Yii Middleware (PR)
- Yii Debug API (PR)
- Демо API-приложения (PR)
⚡️ #yiisoftRequestModel
В пакете Yii Request Model улучшили сообщение о некорректной конфигурации мидлвари в
В пакете Yii Request Model улучшили сообщение о некорректной конфигурации мидлвари в
MiddlewareFactory
(PR).⚡️ #yiisoftRequestModel
В Yii Request Model добавили возможность в обработчике использовать атрибуты для получения данных из запроса (PR). Например:
Доступные атрибуты:
В Yii Request Model добавили возможность в обработчике использовать атрибуты для получения данных из запроса (PR). Например:
final class SimpleController
{
public function action(
#[Route('id')] int $id,
#[Request('foo')] $attribute,
): ResponseInterface {
echo $id;
//...
}
}
Доступные атрибуты:
Body
, Query
, Request
, Route
и UploadedFiles
.🔥7❤2
⚡️ #yiisoftRequestModel
В Yii Request Model немного порефакторили существующие тесты и добавили новых (PR).
В Yii Request Model немного порефакторили существующие тесты и добавили новых (PR).
🔥2
⚡️ #yiisoftRequestModel
Yii Request Model адаптировали к последней версии
Yii Request Model адаптировали к последней версии
yiisoft/middleware-dispatcher
(PR).⚡️ #yiisoftRequestModel
В Yii Request Model обновили версию dev-зависимости
В Yii Request Model обновили версию dev-зависимости
yiisoft/test-support
до ^3.0
(PR).⚡️ #yiisoftRequestModel
В readme пакета Yii Request Model добавили информацию о подключении мидлвари (PR).
В readme пакета Yii Request Model добавили информацию о подключении мидлвари (PR).
⚡️ #yiisoftRequestModel
Несколько улучшений в Yii Request Model.
• Подняли минимальную требуемую версию
• Добавили поддержку
• В CI добавили Rector, применили предлагаемые изменения (PR).
• Немного подчистили код и добавили секцию с требованиями в readme (PR).
Несколько улучшений в Yii Request Model.
• Подняли минимальную требуемую версию
yiisoft/translator
до ^2.0
и адаптировали тесты к последним изменениям в валидаторе (PR).• Добавили поддержку
yiisoft/middleware-dispatcher
версии ^4.0
, а также в CI добавили проверку транзитивных зависимостей (PR).• В CI добавили Rector, применили предлагаемые изменения (PR).
• Немного подчистили код и добавили секцию с требованиями в readme (PR).
🔥2
⚡️ #yiisoftYiiDataview #yiisoftYiiGii #yiisoftRequestModel
Добавили поддержку
- Yii Data Widgets (PR),
- Gii (PR),
- Yii Request Model (PR).
Добавили поддержку
yiisoft/router
версии ^2.0
в пакетах:- Yii Data Widgets (PR),
- Gii (PR),
- Yii Request Model (PR).
👍2
⚡️ #yiisoftValidator #yiisoftDemo #yiisoftYiiMiddleware #yiisoftRequestModel #yiisoftForm #yiisoftYiiDebug #yiisoftYiiGii
Несколько обновлений в Yii Validator.
• Добавили возможность переводить названия атрибутов (PR).
• В правиле
• Перенесли классы (PR):
- Демо приложений (PR),
- Yii Middleware (PR),
- Yii Request Model (PR),
- Yii Form (PR),
- Yii Debug (PR),
- Gii (PR).
Несколько обновлений в Yii Validator.
• Добавили возможность переводить названия атрибутов (PR).
• В правиле
Required
к сообщениям добавили параметр "attribute" (PR).• Перенесли классы (PR):
RulesDumper
→ Yiisoft\Validator\Helper
RuleHandlerContainer
→ Yiisoft\Validator\RuleHandlerResolver
SimpleRuleHandlerContainer
→ Yiisoft\Validator\RuleHandlerResolver
К последним изменениям адаптировали:- Демо приложений (PR),
- Yii Middleware (PR),
- Yii Request Model (PR),
- Yii Form (PR),
- Yii Debug (PR),
- Gii (PR).
👍5
❌ #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