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