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

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

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

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

Два типа классов для вашего проекта, Виктор Бабанов

Как свести хаос кода в проекте к... меньшему хаосу. В большинстве случаев можно оставить только два типа классов: сервисы и DTO. Статья о том, каких правил следует придерживаться при их проектировании, чтобы избежать превращения проекта в "big ball of mud".
👍5
⚡️ #yiisoftHtml #yiisoftAuthJwt #yiisoftRouter #yiisoftLog

Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:

- Yii HTML (PR)
- Yii Auth JWT (PR)
- Yii Router (PR)
- Yii Logging Library (PR)
⚡️ #yiisoftYiiQueue

В пакете Yii Queue подняли минимальную требуемую версию PHP до ^8.0 и psr/log до ^2.0|^3.0 (PR), а также добавили тесты воркера (PR).
👍2👎1
⚡️ #yiisoftYiiDevTool

В Yii Development Tool заменили зависимость cpliakas/git-wrapper, разработка которой была прекращена, на symplify/git-wrapper (PR).
#yiisoftYiiRunnerHttp #yiisoftYiiRunnerRoadrunner #МинорныйРелиз #Релиз

🎁 Yii HTTP Runner 1.1.0

• Повышена минимальная требуемая версия зависимостей (PR):
- yiisoft/log до ^2.0,
- yiisoft/log-target-file до ^1.1,
- yiisoft/error-handler до ^2.1.


🎁 Yii RoadRunner Runner 1.1.0

• Повышена минимальная требуемая версия зависимостей (PR):
- yiisoft/log до ^2.0,
- yiisoft/log-target-file до ^1.1,
- yiisoft/error-handler до ^2.1.
👍2
⚡️ #yiisoftDemo

Несколько улучшений в демо веб-приложения.

• Упростили конфигурацию класса Application (PR).

• Добавили консольную команду fixture/schema/clear, которая удаляет все записи в таблицах БД (PR).

• Добавили альтернативный маршрут /backend для доступа к бэкенду (PR).
👍5
⚡️ #yiisoftYiiRunner

В пакете Yii Runner подняли версию dev-зависимости yiisoft/test-support до ^2.0 (PR).
⚡️ #yiisoftDb #yiisoftDbMssql #yiisoftDbMysql #yiisoftDbOracle #yiisoftDbPgsql #yiisoftDbSqlite #yiisoftActiveRecord

Сделали серьёзный рефакторинг DB-пакетов, практически переписали их:

- Yii DB
- Yii DB MSSQL Server Extension
- Yii DB MySQL Extension
- Yii DB Oracle Extension
- Yii DB PostgreSQL Extension
- Yii DB SQLite Extension
- Yii Active Record

В процессе рефакторинга:

- вынесли из кода зависимости от PDO;
- выделили и сегрегировали интерфейсы;
- исправили ошибки;
- уменьшили сложность кода;
- повысили уровень типизации;
- уровень Psalm повысили до 1;
- покрытие тестами увеличили до 90%.

В связи с тем, что изменениями было задето практически 100% кода и сложности объединения веток, сделали внесение изменение не через PR, а с помощью переименования ветки master в old-master, а dev (ветка в которой проходил рефакторинг) в master.

Пакеты Yii DB Redis Extension и Yii DB MongoDB Extension в рефакторинге не участвовали и на текущий момент находятся в не рабочем состоянии, так как перестали соответствовать интерфейсам из Yii DB.
🔥6👍2
⚡️ #yiisoftFiles

В хелпере Yii Files добавили функции обратного вызова beforeCopy и afterCopy для методов FileHelper::copyFile() и FileHelper::copyDirectory() (PR).
⚡️ #yiisoftDb

В пакете Yii DB подняли версии зависимостей (PR):
- psr/log до ^2.0|^3.0,
- yiisoft/log до ^2.0,
- yiisoft/profiler до ^1.0.3.
⚡️ #yiisoftDb #yiisoftDbMssql #yiisoftDbMysql #yiisoftDbOracle #yiisoftDbPgsql #yiisoftDbSqlite

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

- в интерфейсе ConnectionInterface заменили метод getDriverName() на getDriver(), который возвращает экземпляр PDODriverInterface;

- в классе Dsn добавили методы getDatabaseName(), getHost() и getPort().

Соответствующие изменения сделаны в пакетах:
- Yii DB MSSQL Server Extension (PR)
- Yii DB MySQL Extension (PR)
- Yii DB Oracle Extension (PR)
- Yii DB PostgreSQL Extension (PR)
- Yii DB SQLite Extension (PR)
⚡️ #yiisoftDbMysql

Исправили ошибку при экранировании строк в Yii DB MySQL Extension: теперь символ _ не экранируется (PR).
👍2
⚡️ #yiisoftCacheDb

Адаптировали Yii Cache DB Handler к последним изменениям в Yii DB (PR).
⚡️ #yiisoftProxy #yiisoftYiiDebug

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

Добавлена возможность создавать прокси-объект для объектов без итерфейса:
- в классе ProxyManager метод createObjectProxyFromInterface() переименован в createObjectProxy();
- в классе ClassConfigFactory метод getInterfaceConfig() переименован в getClassConfig().

В классе MethodConfig из конструктора удалён параметр $hasReturnType и добавлен метод hasReturnType().

В классе ParameterConfig из конструктора удалён параметр $hasType и добавлен метод hasType().

Соответствующие изменения внесли в Yii Debug (PR).
👍2
⚡️ #yiisoftValidator

В пакете Yii Validator повышена версия dev-зависимости yiisoft/test-support до ^2.0 (PR).
⚡️ #yiisoftDb

В пакете Yii DB в трейте TestCommandTrait добавили тест команды batchInsert() (PR).
⚡️ #yiisoftMiddlewareDispatcher

В Yii Middleware Dispatcher добавили поддержку определения мидлварей с помощью массивов (array definition) из Yii Definitions (PR).

Теперь можно задавать мидлварь вот так:

[
'class' => MyMiddleware::class,
'__construct()' => [
'someVar' => 42,
],
]
⚡️ #yiisoftCacheDb

В пакете Yii Cache DB Handler подняли минимальную версию PHP до ^8.0 (PR) и сделали несколько улучшений (PR):

- удалили исключение \Yiisoft\Cache\Db\InvalidArgumentException;

- в случае неудачного получения/записи данных в БД теперь выбрасывается исключение CacheException;

- покрытие тестами увеличили до 97%;

- в конфигурации scrutinizer добавили запуск тестов для всех драйверов MySQL, MSSQL и Oracle;

- актуализировали readme.
⚡️ #yiisoftDemoApi

Несколько улучшений класса RestGroupFactory в демо API-приложения:

- шаблон ID объекта в роуте теперь НЕ добавляется для метода post (PR);

- для метода options в контроллере, который обрабатывается OPTIONS-запросы, теперь создаются маршруты как для ресурсов в целом, так и для конкретного ресурса по ID (PR).