Return¶
return ends the current method, and sends back a produced value to the calling module. Execution resumes at the expression following the called module’s invocation.
return may be typed: the returned value is then checked against that type, by static analysis or by the PHP engine, at execution time.
The return type may not always be returned: this is the case for never, which indicates that the method will not return.
return types are covariant: one may return a more precise type, aka a child class, than typed, but not more general, aka a parent class.
return is optional: when omitted, PHP returns automatically null. The returned value of return is also optional: in that case, PHP returns null, but it also returns a distinct value when the method is typed with the return type void.
return does not prevent finally from being executed, when the return command is in a try block.
return is considered a jump, as it stops the current sequential execution, and move the pointer to another part of the code. This is similar to if-then, goto, for, yield, etc.
<?php
function foo() {
if (rand(0, 1)) {
return 'tail';
}
return 'face';
}
echo foo();
interface X {
function m(Y $z): X;
}
interface Y extends X {
function m(X $z): Y;
}
?>
See also PHP return Keyword.
Related : Functions, Method, Closure, Control Flow, Impure Function, Jump, Pure Function, Return Type, Covariance