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

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

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

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

Исправили ошибку psalm в Yii DB (PR).
🔥3😁1🎉1
#yiisoftStrings #МинорныйРелиз #Релиз

🎁 Yii Strings 2.1.0

• Добавлен метод StringHelper::parsePath() для парсинга путей вида path.to.my.dream с поддержкой произвольных разделителей и символа экранирования (PR).

• Добавлен метод Inflector::toSnakeCase(), конвертирующий строку в "snake_case".
🔥2
#yiisoftArrays #МинорныйРелиз #Релиз

🎁 Yii Arrays 2.1.0

• Для парсинга строковых путей в таких методах, как ArrayHelper::getValueByPath(), ArrayHelper::pathExists() и так далее, теперь используется метод StringHelper::parsePath() из Yii Strings, что добавило возможность экранирования символа разделителя с помощью обратного слэша (PR, PR).
🔥3
⚡️ #yiisoftValidator

В Yii Validator добавили возможность упрощённой записи комбинации правил Nested и Each (PR). Например:

$rule = new Nested([
'charts.*.points.*.coordinates.x' => [new Number(min: -10, max: 10)],
'charts.*.points.*.coordinates.y' => [new Number(min: -10, max: 10)],
'charts.*.points.*.rgb' => [
new Count(exactly: 3);
new Number(min: 0, max: 255),
]),
]);


Подробнее в readme.
🔥2
⚡️ #yiisoftDocs

В документации актуализировали ссылки на yiiframework.com (PR).
⚡️ #yiisoftValidator

В Yii Validator доработали логику валидации данных (PR).

• Правила валидации, передаваемые напрямую в метод Validator::validate() всегда имеют приоритет над правилами, содержащимися в проверяемом объекте.

ScalarDataSet переименован в MixedDataSet. Метод MixedDataSet::getAttributeValue() теперь всегда возвращает null.

AttributeDataSet переименован в ObjectDataSet и существенно переработан.

Теперь в конструктор передаётся объект и опционально второй параметр, который указывает параметры какой области видимости обрабатывать в объекте (по умолчанию, ReflectionProperty::IS_PRIVATE|ReflectionProperty::IS_PROTECTED|ReflectionProperty::IS_PUBLIC). То есть появилась возможность обрабатывать не только публичные, но и защищённые, и приватные свойства объекта.

Для объектов, реализующих DataSetInterface, свойства обрабатываться не будут, вместо этого будут вызываться соответствующие методы интерфейса.

Для объектов, реализующих RulesProviderInterface, правила из атрибутов использоваться не будут, вместо этого будет вызываться метод getRules().

• В зависимости от данных передаваемых в метод validate() они оборачиваются в соответствующий DataSet-класс:
- объекты, реализаующие DataSetInterface, — не оборачиваются;
- прочие объекты — оборачиваются в ObjectDataSet;
- массивы — оборачиваются в ArrayDataSet;
- прочие данные — оборачиваются в MixedDataSet.

Таким образом, теперь для валидации объекта, в котором правила прописаны атрибутами к соответствующим свойствам, достаточно лишь передать его в метод validate:

$result = $validator->validate($myObject);
🔥4
⚡️ #yiisoftValidator

В Yii Validator в сообщениях для правил IsTrue и Boolean для булевых значений теперь выводится true и false вместо 1 и 0 соответственно (PR).
🔥2
⚡️ #yiisoftValidator

В Yii Validator добавили возможность с помощью функции обратного вызова определять, какое значение считать пустым (PR).

Функцию можно задать с помощью параметра skipOnEmptyCallback как в конструкторе валидатора, так и в конкретном правиле.

Из коробки доступно три класса, реализующих метод __invoke, то есть их можно использовать как функции обратного вызова:

SkipOnEmpty — пустыми считаются значения null, [] и пустая строка;
SkipOnNull — пустыми считаются только значения null;
SkipNone — никакое значение не считается пустым.
🔥5
⚡️ #yiisoftProfiler

В Yii Profiler добавили интерфейс ProfilerAwareInterface и трейт ProfilerAwareTrait, позволяющий его реализовать (PR).
⚡️ #yiisoftForm

Yii Form адаптировали к последним изменениям в валидаторе, сейчас код для сбора правил из атрибутов в модели формы происходит в самой форме (PR).
🔥3
⚡️ #yiisoftDocs

В документации актуализировали ссылки на внешние ресурсы (PR).
🔥1
⚡️ #yiisoftProfiler

В Yii Profiler улучшили документацию в части установки пакета (PR) и добавили недостающие строки в лог изменений (PR).
👍3
#yiisoftProfiler #ПатчРелиз #Релиз

🎁 Yii Profiler 1.0.5

• Добавлен интерфейс ProfilerAwareInterface и трейт ProfilerAwareTrait, позволяющий его реализовать.

• Исправлено некорректное использование переменной $params в конфигурации пакета.
🔥1
⚡️ #yiisoftDocs

В документации актуализировали ссылки на внешние ресурсы (PR).
🔥1
⚡️ #yiisoftProfiler

Немного подчистили код в Yii Profiler и подняли минимальные версии зависимостей (PR):
- PHP до ^8.0,
- psr/log до ^2.0|^3.0,
- yiisoft/files до ^2.0.
🔥1
⚡️ #yiisoftValidator

В Yii Validator удалили атрибут Embedded, теперь его функцию выполняет правило Nested (PR).

В Nested можно передать в качестве правил:
- массив (или iterable-объект) с правилами;
- имя класса, из атрибутов и свойств которого автоматически будет сформирован массив с правилами;
- объект, реализующий RulesProviderInterface.

Если в Nested правила не передавать, то они будут автоматически получены из атрибутов свойств валидируемого объекта.
🔥4
⚡️ #yiisoftValidator

Несколько улучшений в Yii Validator.

• Для правила Nested разрешили использовать пустой массив при указании правил (PR).

• Исправили проблему с некорректным путём ошибки, которая возникала в некоторых случаях при использовании правила Nested внутри Each (PR).
🔥3
⚡️ #yiisoftRbacCycleDb

Несколько изменений в пакете Yii RBAC Cycle Database Storage.

• Актуализировали конфигурацию scrutinizer, а в GitHub Actions перешли на использование Yii GitHub Actions (PR).

• Адаптировали пакет к последней версии Yii RBAC (PR).
🔥3
⚡️ #yiisoftValidator

В Yii Validator внесли несколько улучшений, касающихся пропуска правил для пустых значений (PR).

• Объединили свойства skipOnEmpty и skipOnEmptyCallback.

• Выделили в отдельный интерфейс SkipOnEmptyInterface и сделали соответствующий трейт.

• Поправили поведение валидатора: теперь skipOnEmpty, указанный в валидаторе, устанавливается только для тех правил, в которых он не установлен явно.
🔥4
⚡️ #yiisoftValidator

В Yii Validator в CI вернули запуск тестов с PHP без дополнительных расширений, который случайно удалили в одном из предыдущих PR (PR).
#yiisoftProfiler #МажорныйРелиз #Релиз

🎁 Yii Profiler 2.0.0

• Минимальная версия PHP увеличена до 8.0, выполнен рефакторинг с использованием нового синтаксиса.

• Подняты минимальные версии зависимостей:
- psr/log до ^2.0|^3.0;
- yiisoft/files до ^2.0.