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

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

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

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

Продолжается подготовка RBAC к релизу.

• В абстрактном классе \Yiisoft\Rbac\Rule имя правила в конструкторе сделали опциональным: если его не передали, то в качестве имени правила будет использоваться имя класса (PR).

• Для правил добавили новый интерфейс RuleInterface, теперь правила реализуют его, а не ItemInterface (PR) и адаптировали к этому изменению Yii RBAC PHP File Storage (PR).

• Из Yii RBAC удалили класс DenyAll (PR), а точнее перенесли его ранее в Yii Access.

• Улучшили аннотации psalm в Yii RBAC (PR) и Yii RBAC PHP File Storage (PR).
⚡️ #yiisoftDb

В пакете Yii DB добавили возможность включить вечное кэширование схемы и запросов с помощью установки длительности кэша в null в методах SchemaCache::setDuration() и QueryCache::setDuration() соответственно (PR).
⚡️ #yiisoftRbac

Удалили интерфейс ItemInterface в пакете Yii Role-Based Access Control, теперь абстрактный класс Item, от которого наследуются роли и разрешения, сам по себе и не реализует никакие интерфейсы (PR).
⚡️ #yiisoftRequestModel

Несколько изменений в пакете Yii Request Model (PR):

- удалили интерфейс ValidatableModelInterface, использовав вместо него интерфейс Yiisoft\Validator\RulesProviderInterface;

- перенесли конфигурацию пакета из группы common в группу web.
👍2
⚡️ #yiisoftYiiRunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner

Общую функциональность классов для запуска приложений вынесли в отдельный абстрактный класс \Yiisoft\Yii\Runner\ApplicationRunner:

Yii Runner (PR),
Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR).
⚡️ #yiisoftYiiRunnerHttp

В пакете Yii HTTP Runner доработали логику определения порта в ServerRequestFactory (PR).

В ситуации, когда не удаётся получить порт из серверной переменной SERVER_PORT, то порт будет определён на основании текущей схемы: 443 для HTTPS и 80 в остальных случаях.
👍2
⚡️ #yiisoftYiiConsole

В документации пакета Yii Console добавили инструкцию по созданию точки входа в консольное приложение (PR).
⚡️ #yiisoftYiiRunnerConsole

В пакете Yii Console Runner убрали всю инфраструктуру для мутационного и юнит-тестирования (зависимости, GitHub Actions, конфигурации), оставив только статический анализ.

Сделано это было в связи с тем, что в пакете остался только один класс, который с помощью метода run() запускает консольное приложение. Метод run() содержит конструкцию:

try {
...
} catch (Throwable $throwable) {
...
} finally {
...
exit();
}

И команда exit() не позволяет протестировать этот метод с помощью юнит-тестов.

В дальнейшем планируем добавить приёмочные тесты с помощью Codeception.
⚡️ #yiisoftDemoApi

Адаптировали демо API-приложения к внесённым ранее изменениям в конфигурации пакета Yii Request Model (PR).
⚡️ #yiisoftYiiDebug

В пакете Yii Debug в интерфейсе CollectorInterface добавили метод getName(), а также улучшили типизацию и описание в doc-блоках (PR).
⚡️ #yiisoftFiles

В пакете Yii Files добавили возврат результата и тип возвращаемый функцией обратного вызова передаваемой в set_error_handler() (PR).
⚡️ #yiisoftRbacPhp

В пакете Yii RBAC PHP File Storage добавлена поддержка создания вложенных папок в случаях, когда папка для хранения данных не существует (PR).
⚡️ #yiisoftYiiDebugApi

В пакете Yii Debug API добавили OpenAPI-аннотации (PR).
⚡️ #yiisoftYiiRunnerConsole

В пакете Yii Console Runner добавили приёмочные тесты с помощью Codeception (PR).
👍1
🔥 #Новости

Алексей Рогачёв вернулся в Yii Core Team. Алексей уже ранее работал над Yii, но потом пришлось переключиться на другие задачи, в том числе работу над сайтом yiiframework.com и поддержку пакетов для Yii2. Сейчас он закончил работу над большим релизом API Documentation Generator for Yii 2 и теперь присоединяется к разработке Yii3. С возвращением 🎉
🎉9👍3🔥3
#yiisoftYiiRunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Runner 1.0.0
🎁 Yii HTTP Runner 1.0.0
🎁 Yii Console Runner 1.0.0

Раннеры позволяют упростить процесс настройки приложения, скрывая детали инициализации. Например, вместо довольно сложной инициализации, в точке входа в HTTP-приложение достаточно простого кода:

<?php

declare(strict_types=1);

use Yiisoft\Yii\Runner\Http\HttpApplicationRunner;

require_once __DIR__ . '/autoload.php';

(
new HttpApplicationRunner(
__DIR__,
$_ENV['YII_DEBUG'],
$_ENV['YII_ENV']
)
)->run();


Вместе с основным пакетом зарелизили адаптеры для консольного и HTTP-приложения. Релиз адаптера для RoadRunner (Yii RoadRunner Runner) будет чуть позже.
🎉7
#yiisoftProfiler #ПатчРелиз #Релиз

🎁 Yii Profiler 1.0.2

• В методе Profiler::end() запрещено передавать контекст, содержащий ключи beginMemory или beginTime.

• При получении категории из контекста добавлена проверка на то, что категория является строкой.

Оба изменения были выполнены в рамках одного пулл-реквеста.
⚡️ #yiisoftRequestModel #yiisoftDemoApi

В пакете Yii Request Model удалили конфигурацию фабрики мидлварей (PR). Подразумевается, что она должна конфигурироваться в приложении. В демо API-приложения, где используется Yii Request Model так и сделали (PR).
⚡️ #yiisoftYiiQueue

В пакете Yii Queue удалили все события (PR), так как единственный кейс для их использования — это отслеживание метрик, а это можно (и лучше) делать в других местах.
⚡️ #yiisoftRbac #yiisoftRbacPhp

Продолжаем готовить RBAC к релизу.

• В пакете Yii RBAC в фабрике для создания правил ClassNameRuleFactory добавили валидацию передаваемого имени класса и создаваемого правила, в случае ошибки бросается исключение RuntimeException с соответствующим сообщением (PR).

• Перенесли Yiisoft\Rbac\RuleFactory\ClassNameRuleFactory в Yiisoft\Rbac\ClassNameRuleFactory, переименовали метод Manager::setGuestRole() в Manager::setGuestRoleName(), причесали служебные файлы и увеличили покрытие тестами до 100% в пакете Yii RBAC (PR).

• Переименовали методы в классе \Yiisoft\Rbac\Manager (PR):
setDefaultRoles()setDefaultRoleNames()
getDefaultRoles()
getDefaultRoleNames()
getDefaultRoleInstances()
getDefaultRoles()

• В пакете Yii RBAC PHP File Storage адаптировали код к последним изменениям в Yii RBAC, причесали служебные файлы и увеличили покрытие тестами (PR, PR, PR).
⚡️ #yiisoftAppApi

Адаптировали шаблон API-приложения к внесённым ранее изменениям в конфигурации пакета Yii Request Model (PR).