what does a php function return by default?
PhpFunctionVariablesLanguage DesignPhp Problem Overview
If I return nothing explicitly, what does a php function exactly return?
function foo() {}
-
What type is it?
-
What value is it?
-
How do I test for it exactly with === ?
-
Did this change from php4 to php5?
-
Is there a difference between
function foo() {}
andfunction foo() { return; }
(I am not asking how to test it like if (foo() !=0) ...
)
Php Solutions
Solution 1 - Php
null
null
if(foo() === null)
-
- Nope.
You can try it out by doing:
$x = foo();
var_dump($x);
Solution 2 - Php
Not returning a value from a PHP function has the same semantics as a function which returns null.
function foo() {}
$x=foo();
echo gettype($x)."\n";
echo isset($x)?"true\n":"false\n";
echo is_null($x)?"true\n":"false\n";
This will output
NULL
false
true
You get the same result if foo is replaced with
function foo() {return null;}
There has been no change in this behaviour from php4 to php5 to php7 (I just tested to be sure!)
Solution 3 - Php
I did find an oddity when specifying function return types. When you do, you must be explicit about returning something from your functions.
<?php
function errorNoReturnDeclared($a = 10) : ?string {
if($a == 10) {
echo 'Hello World!';
}
}
errorNoReturnDeclared(); //Fatal error
Error:
Uncaught TypeError: Return value of errorNoReturnDeclared() must be of the type string or null, none returned in
So if you decide to add some return type specifications on old functions make sure you think about that.