Подтвердить что ты не робот

Что возвращает функция php по умолчанию?

Если я не возвращаю ничего явно, что точно возвращает php-функция?

function foo() {}
  • Какой тип?

  • Какое значение оно имеет?

  • Как мне проверить его с помощью ===?

  • Это изменилось с php4 на php5?

  • Есть ли разница между function foo() {} и function foo() { return; }

(я не спрашиваю, как проверить его как if (foo() !=0) ...)

4b9b3361

Ответ 1

  • null
  • null
  • if(foo() === null)
  • -
  • Нет.

Вы можете попробовать:

$x = foo();
var_dump($x);

Ответ 2

Не возвращать значение из функции PHP имеет ту же семантику, что и функция, возвращающая значение null.

function foo() {}

$x=foo();

echo gettype($x)."\n";
echo isset($x)?"true\n":"false\n";
echo is_null($x)?"true\n":"false\n";

Это приведет к выводу

NULL
false
true

Вы получаете тот же результат, если foo заменяется на

function foo() {return null;}

Не было изменений в этом поведении от php4 до php5 до php7 (я просто проверен, чтобы убедиться!)

Ответ 3

Я нашел странность при указании типов возвращаемых функций. Когда вы это сделаете, вы должны четко указать, что нужно возвращать что-то из ваших функций.

<?php

function errorNoReturnDeclared($a = 10) : ?string {
    if($a == 10) {
        echo 'Hello World!';
    }
}

errorNoReturnDeclared(); //Fatal error

Ошибка:

 Uncaught TypeError: Return value of errorNoReturnDeclared() must be of the type string or null, none returned in 

Поэтому, если вы решите добавить некоторые спецификации возвращаемого типа для старых функций, обязательно подумайте об этом.