在php中使用return关键字非常有趣

时间:2012-04-11 08:48:13

标签: php

我们知道, return 关键字将返回一些值并退出当前函数。意思是,这个只在一些函数中使用。

但是,我看到一些php-dev在函数外部使用return关键字,甚至在index.php文件中(在web服务器的根目录中)。那什么意识????顺便说一下,在函数内部需要一些文件也许是合乎逻辑的,但这种风格不是我的。

3 个答案:

答案 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;
?>