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

Обсуждение:
https://t.iss.one/yii3ru

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
Download Telegram
#yiisoftLogTargetEmail #yiisoftLogTargetFile #yiisoftLogTargetSyslog #МажорныйРелиз #Релиз

🎁 Yii Logging Email Target 4.0

• Типы в конструкторе EmailTarget перенесены из аннотаций в сигнатуру.

• Добавлена поддержка yiisoft/mailer версии ^4.0|^5.0.

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

Релиз подготовили Сергей Предводителев, Дмитрий Дерепко и Sanka.


🎁 Yii Logging File Target 3.0

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

Релиз подготовили Сергей Предводителев и Дмитрий Дерепко.


🎁 Yii Logging Syslog Target 2.0

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

Релиз подготовили Сергей Предводителев, Дмитрий Дерепко и Sanka.
👍4🔥2
#yiisoftYiiConsole #МажорныйРелиз #Релиз

🎁 Yii Console 2.0

• У команды serve добавлена опция workers.

• Исправлена некорректная работа команды list при указании пространства имён.

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

• Явно прописаны транзитивные зависимости psr/event-dispatcher и psr/log.

😎 Релиз подготовили Сергей Предводителев и Дмитрий Дерепко.
👍3
#yiisoftTranslator #yiisoftTranslatorExtractor #МажорныйРелиз #Релиз

🎁 Yii Message Translator 3.0

• В интерфейсе TranslatorInterface реализован текучий интерфейс: методы addCategorySources(), setLocale(),
withDefaultCategory() и withLocale() теперь возвращают static.

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

Релиз подготовил Сергей Предводителев.


🎁 Yii Message Extractor 2.0

• Улучшено описание решения проблемы в дружественном исключении NoCategorySourceConfigException.

• Добавлена поддержка yiisoft/translator версии ^3.0.

• Зависимость yiisoft/yii-console перенесена в секцию require-dev.

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

Релиз подготовил Сергей Предводителев.
🏆5
#yiisoftRouter #yiisoftRouterFastroute #МажорныйРелиз #Релиз

🎁 Yii Router 3.0

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

Релиз подготовил Сергей Предводителев.


🎁 Yii Router FastRoute Adapter 3.0

• Добавлена поддержка yiisoft/router версии ^3.0.

• Конфигурация пакета адаптирована к соглашению Yii об именах групп конфигураций.

Релиз подготовил Сергей Предводителев.
👍4🏆1
#yiisoftViewTwig #МинорныйРелиз #Релиз

🎁 Yii View Twig Renderer 2.1

• Минимальная версия PHP поднята до 8.0.

• Обновлена версия зависимости yiisoft/view до ^6.0|^7.0|^8.0.

• Добавлена поддержка psr/container версии ^2.0.

😎 В подготовке релиза приняли участие: Рустам Мамадаминов, Сергей Предводителев, Chris Yates, Sohel Ahmed Mesaniya, Евгений Зюбин, Wilmer Arambula, Sanka и Дмитрий Дерепко.
👍3🏆1
#yiisoftTranslatorMessagePhp #ПатчРелиз #Релиз

🎁 Yii Translator PHP Message Storage 1.1.1

• Добавлена поддержка yiisoft/translator версии ^3.0.

😎 Релиз подготовил Сергей Предводителев.
👍4🔥1
#yiisoftYiiWidgets #МинорныйРелиз #Релиз

🎁 Yii Widgets 2.1

• Добавлена поддержка yiisoft/cache версии ^3.0.

• Обновлена версия зависимости yiisoft/view до ^8.0.

• Обновлена версия зависимости yiisoft/aliases до ^3.0.

😎 Релиз подготовили Рустам Мамадаминов и Сергей Предводителев.
👍4🔥1
#yiisoftYiiRunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner #МажорныйРелиз #Релиз

🎁 Yii Runner 2.0
🎁 Yii HTTP Runner 2.0
🎁 Yii Console Runner 2.0
🎁 Yii RoadRunner Runner 2.0

• Раннеры адаптированы к соглашению Yii об именах групп конфигураций.

• Добавлена возможность указания имён групп конфигураций.

• Параметры "environment" и "debug" сделаны опциональными.

• Добавлен параметр "checkEvents".

😎 Релизы подготовили Сергей Предводителев, Рустам Мамадаминов и Александр Макаров.
👍311
🔥 #Новости

Недавно было принято соглашение об именах групп конфигураций. Сейчас мы закончили адаптацию пакетов, демо и шаблонов приложений к этому соглашению. Список обновленных пакетов можно посмотреть в тикете на GitHub.

Если вы уже начали работу с шаблонами приложений app или app-api, то вот инструкция по обновлению:

1) В composer.json укажите актуальные версии пакетов.

2) В секции config-plugin обновите имена конфигураций в соответствии со списком ниже.

3) Переименуйте файлы конфигурации в соответствии с изменениями в предыдущем пункте.

4) Запустите composer update.

Список переименований:

- commondi
- webdi-web
- consoledi-console
- providersdi-providers
- providers-webdi-providers-web
- providers-consoledi-providers-console
- delegatesdi-delegates
- delegates-webdi-delegates-web
- delegates-consoledi-delegates-console
- tagsdi-tags
- tags-webdi-tags-web
- tags-consoledi-tags-console
🔥4👍1
#yiisoftResponseDownload

Новый пакет Yii PSR-7 Download Response Factory с фабрикой, помогающей создать PSR-7 ответ для скачивания файлов.

Пример использования:

use \Psr\Http\Message\ResponseInterface;
use \Yiisoft\ResponseDownload\DownloadResponseFactory;

final class MyController
{
public function __construct(
private readonly DownloadResponseFactory $downloadResponseFactory
) {
}

public function sendMyContentAsFile(): ResponseInterface
{
return $this->downloadResponseFactory->sendContentAsFile('Hello!', 'message.txt');
}

public function sendMyFile(): ResponseInterface
{
return $this->downloadResponseFactory->sendFile('message.txt');
}

public function xSendMyFile(): ResponseInterface
{
return $this->downloadResponseFactory->xSendFile('message.txt');
}

public function sendMyStreamAsFile(): ResponseInterface
{
$steam = new MyStream();

return $this->downloadResponseFactory->sendStreamAsFile($steam, 'message.txt');
}
}
🎉5👍1
#yiisoftValidator #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Validator 1.0

Первая стабильная версия валидатора выпущена 🎉

Пакет позволяет проверять данные в любом формате — массивы, объекты, скалярные значения и т. д. Например, валидация объекта будет выглядеть следующим образом:

use Yiisoft\Validator\Rule\AtLeast;
use Yiisoft\Validator\Rule\Email;
use Yiisoft\Validator\Rule\Length;
use Yiisoft\Validator\Rule\Number;
use Yiisoft\Validator\Rule\Required;
use Yiisoft\Validator\Validator;

#[AtLeast(['email', 'phone'])]
final class Person
{
public function __construct(
#[Required]
#[Length(min: 2)]
public ?string $name = null,

#[Number(min: 21)]
public ?int $age = null,

#[Email]
public ?string $email = null,

public ?string $phone = null,
) {
}
}

$person = new Person(
name: 'John',
age: 17,
email: '[email protected]',
phone: null
);

$result = (new Validator())->validate($person);

Результат валидации — объект, который позволяет проверить, прошла ли проверка успешно:

$result->isValid();

А также получить все ошибки:

$result->getErrorMessages();

Основные возможности

- Поддержка произвольных наборов данных.
- Обработка вложенных структур (один к одному и один ко многим).
- Поддержка PHP атрибутов.
- Форматирование и перевод сообщений об ошибках.
- Перевод имён атрибутов.
- Условная валидация.
- Возможность передать контекст валидации в обработчики правил.
- Основные правила валидации из коробки.
- Поддержка DI-контейнера для получения обработчиков правил с зависимостями.
- Экспорт правил для использования на фронтенде.

Подробности смотрите в Readme и документации.

📗 А также читайте обзорную статью «Yii Validator — простой и мощный» от Сергея Предводителева.
🔥18👍8🎉5👏1🏆1
#yiisoftYiiDevPanel

Yii Development Panel – инструмент нового поколения для помощи разработчикам.

Yii Development Panel агрегирует в себе все частоиспользуемые вещи при разработке: классический Debug, генератор кода Gii, новый модуль для инспекции приложения и много новых грядущих фич.

Панель можно скачать себе на компьютер/мобильный телефон как обычное PWA приложение и удобно переключаться между серверами. Можно подключиться даже к продакшену.

Проект написан на React, что позволяет значительно быстрее втаскивать всевозможные UI фишки, по сравнению с классическим HTML+CSS+JS на бэкенде.

Грядущие фичи:

• Поддержка кастомных панелек
• Open API просмотрщик
• Механизм для realtime получения дебаг данных

Для установки нужно подключить yii-debug, yii-debug-api и проследовать по инструкции по установке Yii Development Panel из README проекта.
🔥16👍42
#yiisoftRbacCycleDb #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii RBAC Cycle Database Storage 1.0

Первая стабильная версия хранилища связки ролей с пользователями и иерархии ролей/разрешений для Yii RBAC на основе базы данных с использованием абстракции Cycle DBAL.

Пакет предоставляет:

• реализации интерфейсов хранилища Yii RBAC;

• консольную команду rbac/cycle/init для создания необходимых таблиц в БД.
🔥15👍4🏆2
#yiisoftResponseDownload #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii PSR-7 download response factory 1.0

Первая стабильная версия пакета, предоставляющего несколько методов для создания PSR-7 совместимых ответов для загрузки контента с использованием PSR-17 совместимых фабрик ответов и потоков.
🔥8👍21
#yiisoftYiiConsole #ПатчРелиз #Релиз

🎁 Yii Console 2.0.1

• Исправлена проблема с запуском консольной команды serve в Windows.

😎 Релиз подготовил Александр Макаров.
🔥5👍3
#yiisoftValidator #МинорныйРелиз #Релиз

🎁 Yii Validator 1.1.0

• Добавлен иммутабельный метод Validator::withDefaultSkipOnEmptyCondition(), позволяющий указать условие "пустоты" по умолчанию.

• Добавлено новое правило StringValue, которое проверяет, что значение является строкой.

• В WhenEmpty добавлена проверка на "пустоту" iterable-объектов.

• В трейте CountableLimitTrait в качестве лимита разрешено указывать 0.

😎 Релиз подготовили Алексей Рогачёв, Александр Макаров и Сергей Предводителев.
🔥8
#yiisoftDb #yiisoftDbOracle #yiisoftDbMssql #yiisoftDbMysql #yiisoftDbPgsql #yiisoftDbSqlite #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii DB 1.0
🎁 Yii DB Oracle Extension 1.0
🎁 Yii DB MSSQL Server Extension 1.0
🎁 Yii DB MySQL Extension 1.0
🎁 Yii DB PostgreSQL Extension 1.0
🎁 Yii DB SQLite Extension 1.0

Мы приготовили первый релиз  Yii Database и его драйверов.

Пакет не зависит от фреймворка и может работать с разными типами баз данных:  
MariaDB, MSSQL, MySQL, Oracle, PostgreSQL и SQLite. 
 
При помощи пакета можно делать запросы на создание, чтение, обновление и удаление записей в базе, а также выполнять свои запросы. 

$rows = (new Query($db)) 
    ->select(['id', 'email']) 
    ->from('{{%user}}') 
    ->where(['last_name' => 'Smith']) 
    ->limit(10) 
    ->all();


Пакет сделан гибким. Можно будет добавить поддержку новых баз данных.
 
Как обычно, покрытие тестами, типами и статанализом близко к абсолютному как в главном пакете, так и в драйверах.

Отдельные поздравления для @terabytesoftw и @darkdef_pr, которые сделали невозможное портировав пакет из DBAL Yii2, переработав и улучшив его  👏
🔥33👍92🍾2🎉1
#yiisoftRbac #ПатчРелиз #Релиз

🎁 Yii Role-Based Access Control 1.0.1

• При получении несуществующих дефолтных ролей теперь выбрасывается исключение, притом "дружественное".

😎 Релиз подготовил Dmitriy Goriaev.
🔥10👍2😁1👀1
#yiisoftRbacCycleDb #МажорныйРелиз #Релиз

🎁 Yii RBAC Cycle Database 2.0.0

• Добавлена поддержка уровня вложенности больше 1 для ролей и прав.
• Исправлен неработающий флаг --force для консольной команды RbacCycleInit.
• Исправлена поддержка всех доступных в Cycle реляционных баз данных.
• Тип timestamp заменен на integer.

😎 Релиз подготовил Алексей Рогачев. Отдельная благодарность пользователю sobhan-m94 за обнаружение некоторых проблем и попытки их исправить.
🔥92
#yiisoftRbacDb #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii RBAC Database 1.0

Первая стабильная версия хранилища связки ролей с пользователями и иерархии ролей/разрешений для Yii RBAC на основе базы данных с использованием абстракции Yii Database.

Пакет предоставляет:

• реализации интерфейсов хранилища Yii RBAC;
• консольную команду rbac/db/init для создания необходимых таблиц в БД.

😎 Релиз подготовил Алексей Рогачев.
🔥14🦄32
#yiisoftHydrator #yiisoftInputValidation #inputHttp

Созданы репозитории под три новых пакета.

Yii Hydrator
Гидратор, позволяющий создавать и наполнять любые объекты с поддержкой маппинга, приведения типов, атрибутов и разрешением зависимостей.

Yii Input Validation
Расширение гидратора, позволяющее при создании/наполнении объекта выполнять валидацию.

Yii Input HTTP
Дополнения к гидратору и Yii Middleware Dispatcher:
• модели запроса (этот пакет заменит Yii Request Model);
• атрибуты для гидратора, позволяющие получать данные из объекта запроса (Query, Body, UploadedFiles и т. д.);
• возможность использовать атрибуты гидратора для наполнения параметров в экшенах.

Черновик функционала уже готов и в ближайшее время будет перенесён в основные репозитории:
vjik/input-hydrator
vjik/input-validation
vjik/input-http
PR к yiisoft/form
PR в демо
🔥92👍2