PHP - 如何检查是否从include()'d文件中调用了return()?

Joh*_*man 5 php include

如何判断是否从包含的文件中调用了return().问题是include()返回'int 1',即使没有调用return().这是一个例子......

included_file_1.php

<?php

return 1;
Run Code Online (Sandbox Code Playgroud)

included_file_2.php

<?php

echo 'no return here, meep';
Run Code Online (Sandbox Code Playgroud)

main.php

<?php

$ret = include('included_file_1.php');

// This file DID return a value, int 1, but include() returns this value even if return() wasn't called in the included file.
if ($ret === 1)
{
    echo 'file did not return anything';
}

var_dump($ret);

$ret = include('included_file_2.php');

// The included file DID NOT return a value, but include() returns 'int 1'
if ($ret === 1)
{
    echo 'file did not return anything';
}

var_dump($ret);
Run Code Online (Sandbox Code Playgroud)

编辑:作为一个临时解决方案,我正在捕获include()(来自echo/print语句)的输出.如果生成了任何输出,我将忽略include()的返回值.

不漂亮,但它提供了我在我的Web应用程序/框架中所需的功能.

Pek*_*ica 2

好问题。看看手册中的例子,我猜你做不到。

我想到的最好的解决方法是让项目中的所有包含内容不返回裸值,而是返回包含返回值 ( return array(1);) 的数组。

我想到的其他所有内容(至少是我的)都涉及定义一些常量或变量来标记您是否在包含中。没什么优雅的。