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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
Download Telegram
Все таблицы теперь по умолчанию имеют префикс yii для предотвращения потенциальных коллизий имён с пользовательскими
таблицами и более лёгкой идентификации. Подобный подход планируем внедрить и в остальные зависимые от БД пакеты.

В хранилищах добавлены названия таблиц по умолчанию для упрощения конфигурации.

Транзакции

Добавлен декоратор для Manager, гарантирующий целостность данных при изменениях одновременно в разных хранилищах, в
частности обновлении прав и ролей.

С полным списком изменений можно ознакомиться в CHANGELOG:

- RBAC
- RBAC PHP Storage
- RBAC Cycle Database Storage
- RBAC Yii Database Storage
- RBAC Rules Container
👍19🔥3
#yiisoftInputHttp #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Input HTTP 1.0

Yii Input HTTP позволяет взаимодействовать с DTO с атрибутами, наподобие такого:

use Yiisoft\Input\Http\AbstractInput;
use Yiisoft\Input\Http\Attribute\Data\FromBody;

#[FromBody]
final class UpdatePostInput extends AbstractInput
{
public int $id;
public string $title;
public string $description = '';
public string $content;
}


Возможно его автоматически зарезолвить и гидрировать, например для таких аргументов:

final class UpdatePostController
{
public function update(UpdatePostInput $post): ResponseInterface
{
// ...

/** @var ResponseInterface $response */
return $response;
}
}


Базовые шаги:

- Подключить и сконфиругировать провайдер запроса.
- Сконфигурировать резолвер параметров.
- Создать DTO для входных данных запроса.
- Проставить атрибуты гидратора, предоставляемые этим пакетом, для свойств DTO.
- Добавить название класса DTO как тип аргумента метода класса, где вы хотите, чтобы он зарезолвился.

Для других доступных опций, см. руководство.
🔥11
🔥 #Новости

Сегодня состоялся релиз 100го пакета Yii3.

Сто стабильных пакетов!
Большой релиз Yii3 неизбежен 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥439👍7🤪3❤‍🔥2
#yiisoftYiiRunner #МинорныйРелиз #Релиз

🎁 Yii Runner 2.2

• Добавлена возможность указать путь к папкам vendor и config, а также расположение файла с планом слияния конфигурации (merge plan).
👍6👾1
#yiisoftYiiRunnerConsole #МинорныйРелиз #Релиз

🎁 Yii Console Runner 2.2

• Добавлена возможность указать путь к папкам vendor и config, а также расположение файла с планом слияния конфигурации (merge plan).
👍3👾1
#yiisoftYiiRunnerHttp #МинорныйРелиз #Релиз

🎁 Yii HTTP Runner 2.3

• Добавлена возможность указать путь к папкам vendor и config, а также расположение файла с планом слияния конфигурации (merge plan).

• Реализована отправка заголовков перед отправкой тела ответа, что позволяет клиенту распознать тип содержимого, если оно отправляется с задержкой, например, при использовании потоков.

• В SapiEmitter, ecли содержимое для вывода меньше, чем размер буфера, то буферизированный вывод не используется, что позволяет сократить выделение памяти в таких случаях.

• Добавлена поддержка пакета psr/http-message версии ^2.0.
👍7👾1
#yiisoftDefinitions #МинорныйРелиз #Релиз

🎁 Yii Definitions 3.3

• В определениях в формате массива добавлена возможность вызвать один и тот же метод несколько раз. Для этого в ключе после () нужно добавить любой постфикс. Например:

[
'class' => Collector::class,
'add()' => ['Alex'],
'add()-2' => ['Mike'],
]


• Исправлена фатальная ошибка, возникающая при использовании пересечений типов.
👍5🤔1🤯1👾1
#yiisoftSecurity #ПатчРелиз #Релиз

🎁 Yii Security 1.0.2

• В методе Random::string() указан более точный psalm-тип non-empty-string.

• Явно прописаны зависимости ext-hash и ext-openssl.
👾4👍3
#yiisoftRouterFastroute #МинорныйРелиз #Релиз

🎁 Yii Router FastRoute Adapter 3.1

• В конструктор класса UrlGenerator добавлены опциональные параметры $scheme и $host, с помощью которых можно задать значения по умолчанию для схемы и хоста соответственно.

• Добавлена поддержка пакета psr/http-message версии ^2.0.
👍2👾1
#yiisoftDb #yiisoftDbPgsql #yiisoftDbMysql #yiisoftDbSqlite #yiisoftDbMssql #yiisoftDbOracle #МинорныйРелиз #Релиз

Минорные релизы Yii DB и адаптеров к основным СУБД с исправлением ошибок и несколькими улучшениями.


🎁 Yii Database 1.3

• В контекст лога добавлен тип сообщения.

• Разрешено использование метода DMLQueryBuilderInterface::batchInsert() без указания колонок.

• Добавлен метод DbStringHelper::isReadQuery().

• Исправлено: метод Query::count() возвращал некорректное значение, если результат больше PHP_INT_MAX.

• Исправлена ошибка, возникающая в методе AbstractCommand::getRawSql(), если используется параметр со Stringable значением.

• Исправлено приведение числа к строке в методе AbstractCommand::getRawSql().

• Исправлена ошибка при изменении префикса в AbstractConnection.

• Уточнены psalm-типы.

• Методы помечены устаревшими:
- AbstractSchema::normalizeRowKeyCase()
- SchemaInterface::getRawTableName()
- Quoter::getRawTableName()
- SchemaInterface::isReadQuery()

• Параметр $rawSql в методе AbstractCommand::internalExecute() помечен устаревшим.

• Оптимизация производительности и рефакторинг.

Подробный список изменений тут.


🎁
Yii DB PostgreSQL Driver 1.3

• Добавлена поддержка составных (structured) типов.

• Добавлена поддержка ограничений (constraints) в представлениях (table view).

• Свойство Schema::$typeMap заменено на константу Schema::TYPE_MAP.

• Исправлено: в редких кейсах при чтении индекса в индекс попадали поля, которых там быть не должно.

• Оптимизация производительности и рефакторинг.


🎁 Yii DB MySQL Driver 1.2

• Свойство Schema::$typeMap заменено на константу Schema::TYPE_MAP.

• Исправлена ошибка при использовании метода Command::insertWithReturningPks() с пустыми значениями.

• Оптимизация производительности и рефакторинг.


🎁 Yii DB SQLite Driver 1.2

• Свойство Schema::$typeMap заменено на константу Schema::TYPE_MAP.

• Оптимизация производительности и рефакторинг.


🎁 Yii DB MSSQL Server Driver 1.2

• Свойство Schema::$typeMap заменено на константу Schema::TYPE_MAP.

• Исправлены ошибки в методах Command::insertWithReturningPks() и DMLQueryBuilder::insertWithReturningPks(), возникающие в редких кейсах.

• Оптимизация производительности и рефакторинг.


🎁 Yii DB Oracle Driver 1.3

• Разрешено использование метода DMLQueryBuilderInterface::batchInsert() без указания колонок.

• Свойство Schema::$typeMap заменено на константу Schema::TYPE_MAP.

• Исправлена ошибка, возникающая при использовании Query без указания FROM.

• Исправлена ошибка при использовании метода Command::insertWithReturningPks() с таблицей без первичного ключа.

• Исправлено: метод Schema::getTableSequenceName() теперь возвращает null вместо пустой строки.

• Оптимизация производительности и рефакторинг.
👍5🔥2👾1
#yiisoftCycle #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Cycle 1.0

В релиз ушёл ещё 1 пакет. На этот раз это обертка над Cycle ORM для Yii экосистемы. Cycle известен поддержкой как классических, так и демонизированных приложений на основе, например, RoadRunner.

Пакет предлагает набор консольных команд и инструментов для удобства работы с миграциями и схемами баз данных.

Незадолго до релиза было принято решение часть, связанную с адаптацией Yii Data, вынести в отдельный пакет - Yii Data Cycle, по аналогии с Yii Data DB. Все они также в шаге от релиза. После Yii Data 2.0 последуют первые релизы пакетов-адаптеров.

Хотели бы напомнить, что использование Yii Cycle в демо не означает, что это рекомендованный инструмент / пакет по умолчанию для работы с БД. Вы также можете выбрать, например, Yii DB.

Покрытие тестами, мутационный индекс и уровень статического анализа подтянули до максимума.
👍10🔥74
#yiisoftQueueDb

Yii Queue DB

Новый пакет, в котором планируется реализовать Yii Queue адаптер для работы очередей через базу данных c помощью Yii DB.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👾1
#yiisoftHydrator #МинорныйРелиз #Релиз

🎁 Yii Hydrator 1.2

• Добавлен PHP атрибут ToDateTime для приведения значения к объекту DateTimeImmutable или DateTime.

• Добавлены PHP атрибуты для удаления пробелов (или других символов) в начале и/или конце строки:
- Trim
- LeftTrim
- RightTrim

• Минимальная версия PHP повышена до 8.1.
👍14👾2
#yiisoftArrays #МинорныйРелиз #Релиз

🎁 Yii Arrays 3.1

• Добавлен метод ArrayHelper::renameKey() для переименования ключа в массиве.

• Добавлен метод ArrayHelper::parametrizedMerge(), позволяющий рекурсивно слить два или более массивов с заданным уровнем вложенности.

• В методе ArrayHelper::getObjectVars() уточнён тип результата: array|nullarray.

• Выполнен небольшой рефакторинг в ArrayableTrait.
🔥8👍1👾1
#yiisoftValidator #МинорныйРелиз #Релиз

🎁 Yii Validator 1.3

• Добавлено правило Image для валидации размеров изображения.

• Добавлены правила Date, DateTime и Time для валидации даты/времени.

• В классе Result добавлены методы addErrorWithFormatOnly() и addErrorWithoutPostProcessing().

• Уточнены psalm-типы в классе Result.
👍10👾1
#yiisoftCookies #ПатчРелиз #Релиз

🎁 Yii Cookies 1.2.2

• Добавлена поддержка пакета psr/http-message версии ^2.0.
👍9👾2
🔥 #Новости

Одним из источников пополнения фонда Yii является сервис Tidelift. Недавно руководство сервиса решило существенно сократить выплаты разработчикам PHP-пакетов, что по итогу привело к снижению на ~35% поступлений в наш фонд.

Из фонда Yii финансируется вся разработка фреймворка. Несмотря на уменьшение поступлений, работа будет продолжена, но поддержка, конечно, не будет лишней.

Вы можете поддержать нас финансово на следующих площадках:

⭐️ sponsr

⭐️ boosty

⭐️ Open Collective

Возможно, ваша компания использует фреймворк Yii и неё появится желание в какой-то мере проспонсировать разработку (хорошая идея — обсудить это с руководством 😎). В свою очередь, мы можем рассказать о компании-спонсоре на ресурсах Yii, что положительно скажется на репутации в среде разработчиков.

И ещё напомню, что подписчики на sponsr и boosty получают доступ к закрытому чату с разработчиками Yii3 в Telegram, где можно будет узнать эксклюзивные подробности о процессе разработки и обсудить идеи дальнейшего развития фреймворка.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤔2👍1👾1
#yiisoftCacheApcu #МинорныйРелиз #Релиз

🎁 Yii Cache Library - APCu Handler 1.1

• Подняты минимальные версии зависимостей: psr/simple-cache - до ^2.0|^3.0, а PHP - до ^8.0.
🔥4👍1😐1
#yiisoftSession #МинорныйРелиз #Релиз

🎁 Yii Session 2.1

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

• Минимальная версия PHP поднята до 8.0.
👍2👾2
#yiisoftAuth #ПатчРелиз #Релиз

🎁 Yii Auth 3.1.1

• Добавлена поддержка пакета psr/http-message версии ^2.0.
👍5👾3