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

Обсуждение:
https://yangx.top/yii3ru

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
#yiisoftCacheRedis #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Cache Redis Handler 1.0.0

Первый релиз PSR-16 обработчика кэша для Yii Caching Library на основе Redis.

Реализация основана на redis-клиенте Predis и может использовать как реализация PSR-16 кэша самостоятельно или с Yii Caching Library.
⚡️ #yiisoftRequirements

Обновили версию psalm в Yii Requirements Checker: ^4.11^4.12 (PR).
#yiisoftMiddlewareDispatcher #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Middleware Dispatcher 1.0.0

Реализация PSR-15 диспетчера мидлварей. Используя объект запроса диспетчер выполняет заданный набор мидлварей и создаёт экземпляр объекта ответа.

Пример:

use Yiisoft\Middleware\Dispatcher\MiddlewareDispatcher;
use Yiisoft\Middleware\Dispatcher\MiddlewareFactory;

$dispatcher = new MiddlewareDispatcher(
new MiddlewareFactory($diContainer),
$eventDispatcher
)->withMiddlewares([
static function (): ResponseInterface {
return new Response(418);
},
]);

$request = new ServerRequest('GET', '/teapot');
$response = $dispatcher->dispatch($request, $this->getRequestHandler());
⚡️ #yiisoftCache

Немного подчистили Yii Caching Library (PR): улучшили readme, конфигурации GitHub Actions, doc-блоки и прочие мелкие улучшения.
⚡️ #yiisoftYiiDevTool

Убрали добавление лишней пустой строки при подготовке changelog в Yii Development Tool (PR).
⚡️ #yiisoftYiiCycle

В Yii Cycle ORM добавлена поддержка пакета cycle/schema-renderer для генерации схемы (PR).
#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).
⚡️ #yiisoftYiiRunnerWeb #yiisoftYiiRunnerRoadrunner

В раннерах Yii Web Runner (PR) и Yii RoadRunner Runner (PR) добавлена возможность задать свой обработчик ошибок с помощью методов WebApplicationRunner::withTemporaryErrorHandler() и RoadRunnerApplicationRunner::withTemporaryErrorHandler() соответственно.
⚡️ #yiisoftConfig

Несколько улучшений в Yii Config (PR).

——————

• В модификаторе RemoveFromVendor::keys() добавлена возможность указать пакет(ы) и группы, на которые будет распространяться этот модификатор.

Удалить элементы a и b из всех групп в пакете yiisoft/auth:

RemoveFromVendor::keys(['a'], ['b'])
->package('yiisoft/auth'),

Удалить элементы c и d из групп params и web в пакете yiisoft/yii-web:

RemoveFromVendor::keys(['c'], ['d'])
->package('yiisoft/yii-web', 'params', 'web'),

Удалить элементы e и f из всех групп в пакете yiisoft/auth и из групп params и web в пакете yiisoft/yii-web:

RemoveFromVendor::keys(['e'], ['f'])
->package('yiisoft/auth')
->package('yiisoft/yii-web', 'params', 'web'),

——————

• Добавлен новый модификатор RemoveFromVendor::groups(), позволяющий исключить из конфигурации группы и пакеты.

Удалить группу params из всех пакетов:

RemoveFromVendor::groups([
'*' => 'params',
]),

Удалить группы common и web из всех пакетов:

RemoveFromVendor::groups([
'*' => ['common', 'web'],
]),

Удалить все группы из пакета yiisoft/auth:

RemoveFromVendor::groups([
'yiisoft/auth' => '*',
]),

Удалить группу params из пакета yiisoft/http:

RemoveFromVendor::groups([
'yiisoft/http' => 'params',
]),

Удалить группы params и common из пакета yii-web:

RemoveFromVendor::groups([  
'yiisoft/yii-web' => ['params', 'common'],
]),
#yiisoftMiddlewareDispatcher #МажорныйРелиз #Релиз

🎁 Yii Middleware Dispatcher 2.0.0

Изменён порядок выполнения мидлварей, задаваемых с помощью метода MiddlewareDispatcher::withMiddlewares(): теперь мидлвари выполняются от первой к последней и обратно (PR).

⚡️ #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi #yiisoftRouter

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

Шаблон веб-приложения (PR),
Шаблон API-приложения (PR),
Демо веб-приложения (PR),
Демо API-приложения (PR),
Yii Router (PR).
⚡️ #yiisoftForm

Улучшения в пакете Yii Form:

- добавили интерфейс коллекции ошибок FormErrorsInterface и его реализацию FormErrors, куда вынесли информацию об ошибках валидации (PR);

- для атрибута ID в элементах форм разрешено значение null (PR);

- доработан виджет Hint и добавлена подробная документация для него (PR);

- доработан виджет Label и добавлена подробная документация для него (PR);

- доработан виджет Error (PR).
⚡️ #yiisoftView

Несколько улучшений в пакете Yii View (PR):

- добавлена простая реализация интерфейса ViewContextInterface — класс ViewContext, который принимает в конструкторе путь к контексту;

- добавлены методы View::withContextPath() и WebView::withContextPath() позволяющие задать контекст в виде пути к папке с представлениями.

Последнее изменение позволит более удобно использовать View в виджетах:

final class SidebarMenu extends Widget
{
public function __construct(
private View $view
) {
$this->view = $this->view->withContextPath(__DIR__);
}

protected function run(): string
{
return $this->view->render('menu');
}
}
⚡️ #yiisoftYiiSwagger

Актуализировали конфигурацию пакета Yii Swagger (PR).
⚡️ #yiisoftYiiDataview

Адаптировали пакет Yii Data Widgets к последним изменениям в Yii Router: заменили CurrentRouter на CurrentRouteInterface (PR).
Начали перераспределение классов из Yii Web.

#yiisoftYiiHttp

Создан новый пакет Yii HTTP Application, в который перенесены из пакета Yii Web классы (PR):

- Application,
- NotFoundHandler,
- Event\AfterEmit,
- Event\AfterRequest,
- Event\ApplicationShutdown,
- Event\ApplicationStartup,
- Event\BeforeRequest.

⚡️ #yiisoftYiiRunnerWeb #yiisoftYiiRunnerHttp

Пакет Yii Web Runner переименован в Yii HTTP Runner (yiisoft/yii-runner-http) и в него из пакета Yii Web перенесены классы (PR):

- SapiEmitter,
- ServerRequestFactory,
- Exception\HeadersHaveBeenSentException.

⚡️ #yiisoftYiiRunnerRoadrunner

В пакете Yii RoadRunner Runner зависимость от yiisoft/yii-web заменена на yiisoft/yii-http (PR).
⚡️ #yiisoftYiiRunnerRoadrunner #yiisoftYiiDebugViewer

В пакетах Yii RoadRunner Runner (PR) и Yii Debug Viewer (PR) увеличили версию yiisoft/error-handler до ^2.0.
⚡️ #yiisoftYiiDebugApi

Улучшения в Yii Debug API: обновили зависимости, актуализировали роуты и финализировали классы пакета (PR).
⚡️ #yiisoftValidator

В правиле Url из пакета Yii Validator исправлен паттерн для корректной работы валидации в HTML5 (PR).
⚡️ #yiisoftForm

В пакете Yii Form для правила Url при генерации HTML5 схемы сделаны регистронезависимыми (PR).
⚡️ #yiisoftYiiSwagger

В пакете Yii Swagger подняли версию зависимости swagger-api/swagger-ui до ^4.1 (PR).