1.
private static function flatmap(callable $fn, array $array)
{
if (empty($array)) {
return [];
}
return array_merge(...array_map($fn, $array));
}
Что значит ... в аргументе функции в данном примере? И где про это почитать можно?
$result = $m ?: $path;
Корректно ли писать такие конструкции? Могут ли приводить к ошибкам или нежелательным последствиям? В языке с++ такая конструкция вызвала бы ошибку при $m == true
, т.к. была бы попытка присвоить переменной "ничего". Что в этом случае будет присвоено переменной, значение не поменяется?
Правильно понимаю, что это одно и тоже,
$m ? 0 : $result = $path;
?
3.
$reference && $wrapperLink = function (& $linkParam) use ($self, $eventType, $handler, $reference) { .. }
Можно ли использовать такие конструкции без опасения возникновении ошибок?
Правильно понимаю, что переменной $wrapperLink
будет присвоена функция только если $reference == true
?
Получается, что на практике вмеcто этой конструкции: if($soveVar) someFaction();
можно писать так: $soveVar && someFaction();
?
Как ни странно ответы на все ваши вопросы можно найти в документации
Что значит ...
в аргументе функции в данном примере? И где про это почитать можно?
...
это оператор упаковки/распаковки аргументов функции в массив. Употребляется в обе стороны. Строка вашего кода array_merge(...array_map($fn, $array));
будет равносильна (условно)
$data = array_map($fn, $array);
array_merge($data[0], $data[1], .... $data[N]);
то есть каждый элемент массива будет передан в функцию в качестве отдельного аргумента. Можно использовать в обратную сторону function(...$args){}
при вызове $func($a, $b)
в качестве аргументов получим массив $args = [$a, $b]
.
Примеры можно посмотреть в разделе "Списки аргументов переменной длины"
Корректно ли писать такие конструкции?
Вполне корректно, пример данной записи и логика ее работы приведена в описании тернарного оператора
Начиная с версии PHP 5.3 также стало возможным не писать среднюю часть тернарного оператора. Выражение expr1 ?: expr3 возвращает expr1 если expr1 имеет значение TRUE и expr3 в противном случае.
отсюда следует, что следующее ваше суждение ошибочно.
Правильно понимаю, что это одно и тоже
Относительно вопроса 3. Тут ваши рассуждения корректны. Как и подавляющее большинство других языков, пхп не использует полное вычисление логических выражений. В целом подобная запись снижает читабельность и понятность кода, так что решайте сами, стоит ли ее применять. На практике такая форма записи чаще встречается, например, в JS, а не PHP.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо передать значение переменной php в переменную JavaScript, далаю так:
Набрёл на странное (для меня) поведения модели в Laravel: при изменении атрибутов с помощью метода модели fill($data), преобразования по свойству $casts...
Задача приложения - работать со сторонним RESTfull сервисомВзаимодействие включает в себя обмен JSON сообщениями + по запросу стороннего сервиса,...
Для объектов типа FileStore в Windows стандартными и широко известными методами легко определяется метка и буква тома, объем диска и свободного места,...