Size: a a a

2020 September 06

NO

Nex Otaku in Yii Framework 3
@predvoditelev вот кейс. В твоём варианте, будет сюрприз...
источник

СП

Сергей Предводителев... in Yii Framework 3
Nex Otaku
@predvoditelev вот кейс. В твоём варианте, будет сюрприз...
Пока не будет, я это не правил)
источник

NO

Nex Otaku in Yii Framework 3
Сергей Предводителев
Вот тут было обсуждение https://github.com/yiisoft/arrays/issues/1 я не вникал, но такое поведение убрали.

В общем неоднозначность поведения ведёт к скрытым и неожиданным проблемам
Поэтому поведение должно быть однозначным. Самое простое всегда в приоритет ставится.
источник

СП

Сергей Предводителев... in Yii Framework 3
Nex Otaku
Поэтому поведение должно быть однозначным. Самое простое всегда в приоритет ставится.
у тебя одно другому противоречит. "Самое просто" - это значит несколько вариантов. "Однозначно" - вариант один
источник

NO

Nex Otaku in Yii Framework 3
Есть базовое поведение. Запись и чтение по ключу одномерного массива. И расширенное поведение - магия с вложенностью через точки. Первое как основа должно быть всегда приоритетней.
источник

СП

Сергей Предводителев... in Yii Framework 3
Nex Otaku
Есть базовое поведение. Запись и чтение по ключу одномерного массива. И расширенное поведение - магия с вложенностью через точки. Первое как основа должно быть всегда приоритетней.
Согласен. но вот здесь должно быть 2:

$array = [
 'a' => [
   'b.c' => 1,
   'b' => [
     'c' => 2,
   ],
 ],
];

ArrayHelper::getValue($array, 'a.b.c');
источник

NO

Nex Otaku in Yii Framework 3
Тупо потому что чаще используется и ожидается именно такое.
источник

NO

Nex Otaku in Yii Framework 3
Нет, не должно. Я выше расписал кейс
источник

СП

Сергей Предводителев... in Yii Framework 3
Nex Otaku
Нет, не должно. Я выше расписал кейс
У тебя вот такой кейс:

$array = [
 'a.b' => 1,
 'a' => [
   'b' => 2,
 ],
];

Что должен вернуть ArrayHelper::getValue($array, 'a.b');
источник

СП

Сергей Предводителев... in Yii Framework 3
И вот тут 1
источник

NO

Nex Otaku in Yii Framework 3
1 конечно
источник

NO

Nex Otaku in Yii Framework 3
При рекурсии те же правила должны работать что на первом уровне. Само собой. Иначе вообще всех запутаешь )
источник

СП

Сергей Предводителев... in Yii Framework 3
Тогда смотри вот этот тест https://github.com/yiisoft/arrays/blob/master/tests/ ArrayHelperTest.php#L536 по  вот этому багу: https://github.com/yiisoft/arrays/issues/1
источник

СП

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

СП

Сергей Предводителев... in Yii Framework 3
То есть логика в итоге такая:
Если в массиве есть ключ с таким именем - вернуть его, если нет, то сделать explode по точками и попытаться получить из вложенностей.
источник

T

TradersVE in Yii Framework 3
Qiang Xue it got wrong creating ArrayHelper.
источник

NO

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

АГ

Алексей Гевондян... in Yii Framework 3
Сергей Предводителев
Вот здесь простое и ожидаемое 2 получить
думается что получить в этом случае 1 - просто труднее в реализации, больше кода, и работать будет медленнее, т.к. нужно больше проверок. вообще пример надуман если честно. использовать точки в ключах в таком случае будет только идиот
источник

NO

Nex Otaku in Yii Framework 3
Если ты сделаешь как я описал, то всё будет исправлено в том кейсе.
источник

АГ

Алексей Гевондян... in Yii Framework 3
можно просто кидать эксепшн если точки в ключе и все)
источник