Если я не возвращаю ничего явно, что точно возвращает функция php?
function foo() {} 
Какой тип?
Какая ценность?
Как проверить его с помощью ===?
Это изменилось с php4 на php5?
  Есть ли разница между function foo() {} и function foo() { return; } function foo() { return; } 
  (Я не спрашиваю, как проверить его, как if (foo() !=0) ... ) 
null null if(foo() === null) Вы можете попробовать:
 $x = foo(); var_dump($x); 
Не возвращающее значение из функции 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 (я просто проверял, чтобы быть уверенным!)