Size: a a a

2020 September 04

СП

Сергей Предводителев... in Yii Framework 3
В ArrayHelper осталась одна строчка не покрытая тестами.

Правильно я понимаю, что вот здесь empty($array) всегда будет возвращать false, т. к. $array — объект?

И как следствие весь блок

if (!property_exists($array, $part) && empty($array)) {
 return $default;
}

... можно смело удалить.

+ в описании к методу getValue() добавить, что $default возвращается только для массивов, а для объекта всегда будет попытка возвращения, т. к. могут быть магические методы и 100% узнать, что значения нет в объекте нельзя.
источник

Д

Дмитрий in Yii Framework 3
Сергей Предводителев
В ArrayHelper осталась одна строчка не покрытая тестами.

Правильно я понимаю, что вот здесь empty($array) всегда будет возвращать false, т. к. $array — объект?

И как следствие весь блок

if (!property_exists($array, $part) && empty($array)) {
 return $default;
}

... можно смело удалить.

+ в описании к методу getValue() добавить, что $default возвращается только для массивов, а для объекта всегда будет попытка возвращения, т. к. могут быть магические методы и 100% узнать, что значения нет в объекте нельзя.
Можно ведь написать кейс. Ещё сюда нужно добавить взятие статической переменной
источник

СП

Сергей Предводителев... in Yii Framework 3
Дмитрий
Можно ведь написать кейс. Ещё сюда нужно добавить взятие статической переменной
Какой кейс?
источник

Д

Дмитрий in Yii Framework 3
Объект без свойства и объект с пустым свойством
источник

СП

Сергей Предводителев... in Yii Framework 3
Дмитрий
Объект без свойства и объект с пустым свойством
В этом случае empty() всё равно вернёт false
источник

В

Виктор in Yii Framework 3
Сергей Предводителев
В этом случае empty() всё равно вернёт false
Не помешает сначала написать тест, а потом - удалить. Можно даже в одном коммите 😊
источник

СП

Сергей Предводителев... in Yii Framework 3
Виктор
Не помешает сначала написать тест, а потом - удалить. Можно даже в одном коммите 😊
Я пробовал, exception вываливается
источник

В

Виктор in Yii Framework 3
Сергей Предводителев
Я пробовал, exception вываливается
На empty?
источник

СП

Сергей Предводителев... in Yii Framework 3
Виктор
На empty?
Нет, empty false возвращает и он пытается получить свойство: $array->$part
источник

СП

Сергей Предводителев... in Yii Framework 3
а свойства нет и эксепшн
источник

В

Виктор in Yii Framework 3
Я к тому, что эти тесты должны бы быть в пакете.
источник

СП

Сергей Предводителев... in Yii Framework 3
А.. то что эксепшен когда нет свойства?
источник

В

Виктор in Yii Framework 3
Да. А ещё - что все ок, когда оно есть, и что все ок, когда свойство статическое.
источник

СП

Сергей Предводителев... in Yii Framework 3
хм... но как понять, что нужно брать статическое свойство?
источник

СП

Сергей Предводителев... in Yii Framework 3
обычное свойство может возвращаться с помощью магии, то есть мы не можем знать, что его нет.
источник

СП

Сергей Предводителев... in Yii Framework 3
А если нет способа узнать, может ли вернуть объект свойство, то и работать со статическими свойствами в ArrayHelper::getValue() мы не можем.
источник

В

Виктор in Yii Framework 3
Пожалуй, ты прав, а я ещё не проснулся.
Значит, проверить на наличие правильного исключения при попытке достать статическое свойство 😊
источник

СП

Сергей Предводителев... in Yii Framework 3
Виктор
Пожалуй, ты прав, а я ещё не проснулся.
Значит, проверить на наличие правильного исключения при попытке достать статическое свойство 😊
Так зачем вообще лезть в статические свойства, если есть обычные свойства + магия?
источник

В

Виктор in Yii Framework 3
Не понял вопроса
источник

СП

Сергей Предводителев... in Yii Framework 3
аа.. сначала пытаться получить статическое, а если его нет, то потом доставать обычное?
источник