非常有趣的使用返回关键字在php
我们知道,返回关键字将返回一些值并退出当前函数。也就是说,这个只在一些功能中使用。非常有趣的使用返回关键字在php
但是,我看到一些php-dev的使用return关键字在函数外,即使在index.php文件(在web服务器的根目录下)。那什么意识????顺便说一下,也许在函数内部需要一些文件是合乎逻辑的,但是这种风格不是我的。
有没有什么比docs做什么更多。
关于return
的常见用法:
如果在一个函数中调用,
return
声明立即 结束当前函数的执行,并返回其参数为 函数调用的值。返回还将结束执行 和eval()
语句或脚本文件。
关于不常见的用法:
如果从全球范围内调用,则当前脚本文件 的执行结束。如果当前的脚本文件是
include
d或require
d, 那么控制权将被传回给调用文件。此外,如果包含 当前脚本文件,则返回的值将返回为 作为包含调用的值。如果在主脚本文件中从 调用返回,则脚本执行结束。如果 当前脚本文件是由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 包括文件。看看这个帖子这也解释了它:
Prevent Code Injection in PHP include files
在讨论它是不是很久以前我极力反对 加入编码标准>在PHP文件结尾?但miqrogroove指出我有一个有趣的方面,为什么它在每个文件的末尾有附加的return语句是合理的:那一个(仅返回语句的 )可以防止攻击者追加有效载荷代码 到现有的PHP文件,例如已知的包含文件。 对策非常简单,只需在文件的末尾添加一条返回语句即 。这将结束该包括“子程序”:
实施例:
/* all the include file's php code */
return;
?>
的链路断开 – Yang 2012-04-11 08:59:37
@whocares:适用于我:HTTP:/ /hakre.wordpress.com/2010/03/03/prevent-code-injection-in-php-include-files/ – Sarfraz 2012-04-11 09:00:08
为防止代码注入:http://php.net/halt-compiler – KingCrunch 2012-04-11 09:24:04
http://codepad.org/laiu6wru – hjpotter92 2012-04-11 08:51:21