PHP函数中的简单`return`是否会过早地结束函数?

ale*_*lex 9 php function

我刚看到这个

// Check to see if the request is a XHR call    
if (request::is_ajax())
{
  // Send the 403 header
  header('HTTP/1.1 403 Forbidden');
  return;
}
Run Code Online (Sandbox Code Playgroud)

我以前没见过简单return,我从来没有用过它.我唯一的猜测是它只是与任何行为相同return 'something'(停止函数),除非实际上没有返回结果.

此外,在这种情况下会发生什么?

function text($var)   
{
    if ( ! $var) {
        return;
    }
    do_something();
}

$var = text('');
Run Code Online (Sandbox Code Playgroud)

我知道这是一个不好的例子(它可能应该返回false或抛出异常),但它会是一个错误,还是$var简单地为null或空白?

Edd*_*ddy 12

function text($var) 

{

    if ( ! $var) {
        return;
    }
    do_something();

}

$var = text('');

echo gettype($var);
echo is_bool($var) ? "true" : "false";
echo is_string($var) ? "true" : "false";
echo is_null($var) ? "true" : "false";
Run Code Online (Sandbox Code Playgroud)

收益:

NULL false false false


小智 10

PHP是动态类型的,因此返回任何值都不等于在任何类型中返回null值.


小智 5

没有值的返回将返回null。

手册中的更多信息:

如果从函数内部调用,则return()语句将立即结束当前函数的执行,并将其参数作为函数调用的值返回。return()也将结束eval()语句或脚本文件的执行。

如果从全局范围调用,则结束当前脚本文件的执行。如果当前脚本文件是include()ed或require()ed,则将控制权传递回调用文件。此外,如果当前脚本文件被include()了,则返回给return()的值将作为include()调用的值返回。如果从主脚本文件中调用return(),则脚本执行结束。如果当前脚本文件由php.ini中的auto_prepend_file或auto_append_file配置选项命名,则该脚本文件的执行结束。