Wenn ich nichts explizit zurückgebe, was gibt eine PHP-Funktion genau zurück?
function foo() {}
Um welchen Typ handelt es sich?
Welchen Wert hat es?
Wie teste ich es genau mit ===?
Hat sich dies von php4 zu php5 geändert?
Gibt es einen Unterschied zwischen
function foo() {}
undfunction foo() { return; }
(Ich frage nicht, wie ich es testen soll if (foo() !=0) ...
)
php
function
variables
language-design
user89021
quelle
quelle
Antworten:
null
null
if(foo() === null)
Sie können es ausprobieren, indem Sie Folgendes tun:
quelle
Wenn Sie keinen Wert von einer PHP-Funktion zurückgeben, hat dies dieselbe Semantik wie eine Funktion, die null zurückgibt.
function foo() {} $x=foo(); echo gettype($x)."\n"; echo isset($x)?"true\n":"false\n"; echo is_null($x)?"true\n":"false\n";
Dies wird ausgegeben
NULL false true
Sie erhalten das gleiche Ergebnis, wenn foo durch ersetzt wird
function foo() {return null;}
Es hat keine Änderung in diesem Verhalten von PHP4 zu PHP5 zu PHP7 gegeben (ich habe nur getestet , um sicher zu sein!)
quelle
Ich habe eine Kuriosität bei der Angabe von Funktionsrückgabetypen gefunden. Wenn Sie dies tun, müssen Sie explizit angeben, dass Sie etwas von Ihren Funktionen zurückgeben möchten.
<?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
Wenn Sie sich also dazu entschließen, einige Rückgabetypspezifikationen für alte Funktionen hinzuzufügen, sollten Sie darüber nachdenken.
quelle