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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #yiisoftForm

В пакете Yii Form улучшена конфигурация scrutinizer (PR): версия PHP изменена на 8.0.11 + мелкие правки.
⚡️ #yiisoftRouter

В пакете Yii Router у роутов добавлен магический метод Route::__debugInfo() для вывода отладочной информации (PR).
⚡️ #yiisoftDemo

В демо веб-приложения улучшена конфигурация scrutinizer (PR): версия PHP изменена на 8.0.11 + мелкие правки.
⚡️ #yiisoftRouter #yiisoftRouterFastroute #yiisoftApp #yiisoftDemo

В пакете Yii Router для хранения информации о текущем роуте добавлен интерфейс CurrentRouteInterface, содержащий только геттеры (PR).

Теперь в приложениях вместо класса CurrentRoute нужно использовать новый интерфейс CurrentRouteInterface.

Необходимые изменения внесены в пакеты и приложения:
- Yii Router FastRoute Adapter (PR),
- Шаблон веб-приложения (PR),
- Демо веб-приложения (PR).
#yiisoftI18n #МинорныйРелиз #Релиз

🎁 Yii Internationalization Library 1.1.0

Добавлена поддержка ключевых слов hours, colnumeric и colcasefirst (PR), которые являются частью ECMAScript 2022 Internationalization API Specification (ECMA-402 9th Edition), и их поддержка позволяет улучшить связь между PHP и JavaScript.

hours задаёт часовой цикл для локали (например, h11, h12, h23, h24). Подробности в документации: key/type definition for the Unicode Hour Cycle Identifier.

colnumeric и colcasefirst являются частью Unicode Locale Data Markup Language.
⚡️ #yiisoftDemo

В демо веб-приложения экшн ApiInfo перемещён в пространство имён App\Controller\Actions (PR).
⚡️ #yiisoftI18n

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

Добавили новый пакет Yii Cache Redis Handler — обработчик кэша для Yii Caching Library на основе Redis.
#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');
}
}