从包含文件返回

bea*_*ear 53 php

在PHP中,如何从包含的脚本返回到包含它的脚本?

IE:

1 - 主要脚本2 - 应用程序3 - 包括在内

基本上,我想从3回到2,return()不起作用.

代码2 - 应用程序

$page = "User Manager";
if($permission["13"] !=='1'){
    include("/home/radonsys/public_html/global/error/permerror.php");
    return();
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*mer 121

includeme.php:

$x = 5;
return $x;
Run Code Online (Sandbox Code Playgroud)

main.php:

$myX = (include 'includeme.php');
Run Code Online (Sandbox Code Playgroud)

这是PHP的一个鲜为人知的功能之一,但它可以很好地设置非常简单的配置文件.

  • 应该注意的是,在大多数情况下,这将被认为是一种有点糟糕的编码风格,因为它将包含文件视为一种功能.更"标准"的方法是在include文件中放置具有正确名称的函数,包括文件(函数外没有任何return语句),然后调用所需的函数. (30认同)
  • 使用括号时要小心(即include("x.php");而不是包含"x.php"),当涉及到返回值时.有关`include`的PHP文档,请参阅示例4:http://php.net/manual/en/function.include.php (8认同)
  • @HenrikOpel这听起来像"不要使用PHP的所有功能,因为其他人没有." 这不是为有效地从语言中删除功能开辟了一个不好的先例,最终将其归结为最不常见的开发人员吗? (6认同)
  • @HenrikOpel,解释并详细说明。*为什么*这是糟糕的编码风格? (3认同)
  • 正如所说的那样@Pacerier,因为它将include文件视为一个函数,因此依赖于一种相当不寻常的,特定于语言的而不是非常明确的行为.这样的事情很容易被开发人员潜入维护(或花费一些时间来了解正在发生的事情)而错过,所以如果有一个等效的,更常见的方法(比如在这种情况下使用显式函数调用),它应该是首选. (3认同)

ins*_* me 19

return应该工作,如文档所述.

如果当前脚本文件是include()ed或require()ed,则控制权将传递回调用文件.此外,如果当前脚本文件是include()ed,则返回给予return()的值将作为include()调用的值返回.


Gra*_*avy 15

我知道这已经得到了解答,但我认为我有一个很好的解决方案......

main.php

function test()
{
    $data = 'test';
    ob_start();
        include( dirname ( __FILE__ ) . '/included.php' );
    return ob_get_clean();
}
Run Code Online (Sandbox Code Playgroud)

included.php

<h1>Test Content</h1>
<p>This is the data: <?php echo $data; ?></p>
Run Code Online (Sandbox Code Playgroud)

我刚刚包含$data,表明您仍然可以将数据传递给包含的文件,以及返回包含的文件.


Eev*_*vee 6

嗯,PHP手册不同意你的看法. return应该把你从一个包含的文件中保释出来.当然,它不会在函数内部起作用.


Bri*_*ian 5

有关include的信息,请参见文档中的示例#5

包含脚本时可以获取脚本的返回值,例如:

$foo = include 'script.php';
Run Code Online (Sandbox Code Playgroud)