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

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

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

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

Исправили проблему с многократным созданием подключения (ConnectionInterface) в Yii Active Record (PR).
🔥 #yiisoftDb #yiisoftActiveRecord #Новости

Yii DB https://github.com/yiisoft/db
Yii Active Record https://github.com/yiisoft/active-record
А также - их адаптеры.

Пакеты активно эволюционируют: в них динамично меняется API, код пакетов становится чище, абстракции - прозрачнее. После завершения пакета изменений мы опубликуем большую новость о произошедших изменениях, а пока рекомендуем воздержаться от обновления этих пакетов ввиду нестабильности публичного API.
👍6👏1
⚡️ #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
⚡️ #yiisoftDb #yiisoftDbSqlite #yiisoftDbMssql #yiisoftDbMysql #yiisoftDbOracle #yiisoftDbPgsql #yiisoftActiveRecord

В Yii DB у нескольких методов изменили тип возвращаемого значения (PR):

CommandInterface::queryColumn(): array|falsearray

CommandInterface::queryOne(): array|false?array

QueryInterface::one(): mixedarray|object|null

При дальнейшем рефакторинге в QueryInterface::one() планируется изменить тип на ?array.

Соответствующие изменения внесены в пакеты:

- Yii DB SQLite Extension (PR)
- Yii DB MSSQL Server Extension (PR)
- Yii DB MySQL Extension (PR)
- Yii DB Oracle Extension (PR)
- Yii DB PostgreSQL Extension (PR)
- Yii Active Record (PR)
⚡️ #yiisoftActiveRecord

В Yii Active Record добавили возможность динамически задавать имя таблицы, в интерфейсе ActiveRecordInterface заменили статический метод tableName() на обычный getTableName() (PR).
👍3🔥2
🔥 #yiisoftActiveRecord #Новости

В ближайшее время планируются мажорные изменения в пакете yiisoft/active-record.

Если пользуетесь этим пакетом, рекомендуем зафиксировать текущую версию.

Пример как это сделать через секцию require в composer.json:

"require": {
...
"yiisoft/active-record": "dev-master#f4966ccef816c1ed77741fa4c2945ce05ce37695",
...
}
👍10👌1
🔥 #yiisoftActiveRecord #News

В пакете yiisoft/active-record методы класса, содержащие слово attribute, были переименованы.

- attributes() -> propertyNames()
- hasAttribute() -> hasProperty()
- getAttribute() -> get()
- getAttributes() -> propertyValues()
- getAttributesInternal() -> propertyValuesInternal()
- getOldAttribute() -> oldValue()
- getOldAttributes() -> oldValues()
- getDirtyAttributes() -> dirtyValues()
- markAttributeDirty() -> markPropertyDirty()
- isAttributeChanged() -> isPropertyChanged()
- setAttribute() -> set()
- setAttributes() -> populateProperties()
- populateAttribute() -> populateProperty()
- setOldAttribute() -> assignOldValue()
- setOldAttributes() -> assignOldValues()
- updateAttributes() -> updateProperties()

Переименование сделано, чтобы в будущем избежать путаницы с PHP атрибутами #[Attribute].
👍143🔥2