Size: a a a

2020 September 10

NO

Nex Otaku in Yii Framework 3
С пропертями абсолютно аналогично.

$prop = $obj->a->b->c ?? 'default';
источник

АН

Александр Некрасов... in Yii Framework 3
Nex Otaku
$value = $array['a']['b']['c'] ?? 'default';

Без всяких хелперов, Сергей
тут сразу понятно что и как, а с хелперов, который имеет разные повидения, не очень
источник

СП

Сергей Предводителев... in Yii Framework 3
О как) буду знать
источник

NO

Nex Otaku in Yii Framework 3
Александр Некрасов
тут сразу понятно что и как, а с хелперов, который имеет разные повидения, не очень
Вот именно. Для простого случая оно и не надо.
источник

СП

Сергей Предводителев... in Yii Framework 3
Но проблема с неявностью не уходит.

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

Разве очевидно, что getVaue($array, 'a.b.c') должен вернуть?
Мне кажется, что нет.
источник

NO

Nex Otaku in Yii Framework 3
Это просто сокращение чтобы меньше писать и легче читать.
источник

NO

Nex Otaku in Yii Framework 3
Сергей Предводителев
Но проблема с неявностью не уходит.

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

Разве очевидно, что getVaue($array, 'a.b.c') должен вернуть?
Мне кажется, что нет.
Я выше написал. Подробно по всем пунктам.
источник

NO

Nex Otaku in Yii Framework 3
Переслано от Nex Otaku
Во-первых, пример сильно оторван от жизни. Реального кейса нет.

Во-вторых, это не касается issue #48.

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

1. Первое значение - точки + вложенность, используем массив ключей: getValue($array, ['a.b', 'c'])

2. Второе значение - просто вложенность, можем использовать путь массивом или дот-нотацией: getValue($array, ['a', 'b', 'c']); getValue($array, 'a.b.c'])

3. Третье значение - точки + вложенность, используем массив ключей: getValue($array, ['a', 'b.c'])

В документации описания такого кейса нет, но можно добавить.
источник

СП

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

NO

Nex Otaku in Yii Framework 3
Почему закрыть. Можно для особенно дотошных в доку добавить.
источник

NO

Nex Otaku in Yii Framework 3
Но все используют и никого не напрягает вымышленная "неоднозначность".
источник

СП

Сергей Предводителев... in Yii Framework 3
Ладно.. я думаю смысла говорить дальше нет
источник

СП

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

NO

Nex Otaku in Yii Framework 3
Потому что когда всё это в реальном проекте используется, то вот таких вопросов не всплывает.
источник

AB

Alexander Borisov in Yii Framework 3
Но вообще юзкейсы есть: https://qna.habr.com/q/452785
источник

AM

Alexander Makarov in Yii Framework 3
юзкейсы - это когда передаётся или формируется путь не руками, а программно
источник

AM

Alexander Makarov in Yii Framework 3
в этом случае не напишешь $arr['a']['b'] ?? null
источник

NO

Nex Otaku in Yii Framework 3
Сергей, ты не знаешь как работает null coalescing с массивами. Но готов ArrayHelper весь перекроить потому что что-то не понравилось. Я даже не знаю как к этому относиться. Мне кажется Дарк чересчур демократичен.
источник

AM

Alexander Makarov in Yii Framework 3
Да не хочет он его кроить :)
источник

СП

Сергей Предводителев... in Yii Framework 3
Nex Otaku
Сергей, ты не знаешь как работает null coalescing с массивами. Но готов ArrayHelper весь перекроить потому что что-то не понравилось. Я даже не знаю как к этому относиться. Мне кажется Дарк чересчур демократичен.
Я предлагаю и привожу доводы, не более
источник