返回关键字在全局范围中如何工作?

问题描述 投票:0回答:3
我们知道,返回的关键字将返回一些值并退出当前功能。这会导致正确使用

return仅在函数/方法内存在。

,我看到一些PHP开发人员即使在index.php文件(Web Server的根)中也使用了功能之外的

return

使用。在这种情况下是什么意思?顺便说一句,可能需要一些文件内部功能,但这种样式不是我的。

没有什么要说的要比
docs的了。

php return global-scope
3个回答
2
投票
的常见用法:

如果从函数中调用,请立即

return

语句 结束当前函数的执行,并将其参数返回为 函数调用的值。返回还将结束执行

eval()
语句或脚本文件。

不太常见的用法:

如果从全局范围调用,然后执行当前脚本
  文件结束。如果当前脚本文件是
include
require

D, 然后,控制将传递回呼叫文件。此外,如果是 包括当前脚本文件,然后给出的返回的值将 作为包含呼叫的值返回。如果从 在主脚本文件中,然后脚本执行结束。如果是 当前脚本文件由auto_prepend_file命名或 auto_append_file配置选项php.ini,然后是该脚本 文件的执行结束了。

手册中的某个地方记录了记录
// myFile.php return array( 'foo' => 'bar'); // somewhere else $config = include 'myFile.php'; echo $config['foo'];

如果您在主范围中使用
return
如果在主范围中使用php,将留下文件包含,并将值用作包含(
include[_once]()

require[_once]()

2
投票

但是,我看到了一些php-dev的使用返回关键字外部功能,甚至
  在index.php文件中(在Web服务器的根中)。那是什么意思?
您知道共同的目的。但是,您要问的是防止PHP

文件中的代码注入。看看这篇文章,该帖子解释了:

php中的PHP中的预备代码注入包括文件


  
在讨论编码标准的同时,我不久前就反对 在PHP文件的末尾添加?>。但是Miqrogroove向我指出了 有趣的方面为什么实际上可以有意义 每个文件末尾的其他返回语句:

返回语句)可以防止攻击者附加有效载荷代码 对于现有的PHP文件,例如已知包括文件。 对抗非常容易,只需在 文件的结尾。它将结束包括“子例程”:

1
投票

示例:

/* all the include file's php code */ return; ?>

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.