Нулевой оператор слияния вызывает функцию дважды? - PullRequest
0 голосов
/ 30 сентября 2018

Нулевой оператор объединения (??) возвращает свой первый операнд, если он существует и не равен NULL, и иначе возвращает свой второй операнд.

Если первый операнд является вызовом функции или метода, выполняет лиоператор вызывает вызов функции дважды?

В качестве примера, скажем, функция get_name() возвращает строковое значение или ноль.

$name = get_name() ?? 'no name found';

Так же, как get_name()вызывается один раз, и сохраненное значение готово присвоить его переменной ($name) или когда ?? активирован из-за того, что функция, возвращающая значение, истинное для isset(), ?? вызывает первый операндво второй раз, чтобы получить значение?

1 Ответ

0 голосов
/ 30 сентября 2018

Он вызывается только один раз.

Это довольно легко увидеть, если добавить к вашей функции побочный эффект, такой как печать, например:

<?php
function get_name() {
    print("get_name() was called\n");
    return "somestring";
}

$name = get_name() ?? 'no name found';
print($name);
?>

Демо

...