众所周知,return关键字将返回一些值并退出当前函数。意思是,这个仅在某些功能内部使用。
但是,我看到一些 php-dev 在函数之外使用 return 关键字,甚至在 index.php 文件中(在 Web 服务器的根目录中)。那什么意识????顺便说一句,也许在函数中需要一些文件是合乎逻辑的,但这种风格不是我的。
众所周知,return关键字将返回一些值并退出当前函数。意思是,这个仅在某些功能内部使用。
但是,我看到一些 php-dev 在函数之外使用 return 关键字,甚至在 index.php 文件中(在 Web 服务器的根目录中)。那什么意识????顺便说一句,也许在函数中需要一些文件是合乎逻辑的,但这种风格不是我的。
除了文档所做的事情外,没有什么可说的了。
关于 的常见用法return
:
如果从函数内部调用,该
return
语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。return 还将结束eval()
语句或脚本文件的执行。
关于不太常见的用法:
如果从全局范围调用,则结束当前脚本文件的执行。如果当前脚本文件是
include
d 或require
d,则将控制权传递回调用文件。此外,如果包含当前脚本文件,则返回的值将作为包含调用的值返回。如果从主脚本文件中调用 return,则脚本执行结束。如果当前脚本文件由 php.ini 中的 auto_prepend_file 或 auto_append_file 配置选项命名,则该脚本文件的执行结束。
它记录在手册中的某处
// myFile.php
return array( 'foo' => 'bar');
// somewhere else
$config = include 'myFile.php';
echo $config['foo'];
如果您return
在主范围内使用 php 将保留文件包含并使用该值作为包含 ( include[_once]()
, require[_once]()
) 的“返回值”。
但是,我看到一些 php-dev 在函数之外使用 return 关键字,甚至在 index.php 文件中(在 Web 服务器的根目录中)。那什么意识???
你知道共同的目的。但是您要问的是用于防止 php包含文件中的代码注入。看看这篇解释它的帖子:
在讨论编码标准时,不久前我反对在 php 文件末尾添加 ?>。但是 miqrogroove 向我指出了一个有趣的方面,为什么它实际上是有意义的,并且在每个文件的末尾有一个额外的 return 语句:那个(仅仅是 return 语句)可以防止攻击者将有效负载代码附加到现有的 PHP 文件,例如已知的包含文件。对策很简单,只需在文件末尾添加一个return语句即可。它将结束包含“子程序”:
例子:
/* all the include file's php code */
return;
?>