如果方法体包含在另一个php文件中,则无法返回值


Cannot return values, if method body is included from another php file?

我正在构建一个类,它的一些方法体在其他php文件中定义。我必须这样做,因为尽管大多数函数都很小,很正常,而且是手工编写的,但有几个函数需要由我制作的另一个脚本自动生成。问题是,尽管调用了这些方法,但这些方法中的返回语句似乎不会执行。一般结构如下:

MyClass.php:

<?php
class MyClass
{
    public function foo()
    {
        include "myclass-foo-body.php";
    }
}
?>

myclass foo-body.php:

<?php
echo "foo()"; // This executes and outputs as normal.
return 42; // This does not appear to actually execute or return anything.
?>

test.php:

<?php
include_once "MyClass.php";
$bar = new MyClass();
$foo = $bar->foo();
var_dump($foo); // Ends up being NULL instead of 42.
?>

那么,我在这里做错了什么?函数/方法体实际上不应该包含在另一个php文件中吗?我似乎已经遵循了php的include文档,但似乎缺少关键信息。(我找不到任何关于这个主题的现有问题,所以希望这不是一个骗局!)

谢谢!

您的主体文件的返回值将是include调用的返回值,因此您应该按照下面的方式进行操作。

    public function foo()
    {
       return  include "myclass-foo-body.php";
    }

您的方法foo没有返回任何内容。

包含文件中的CCD_ 2终止对包含文件的处理。

PHP手册

可以在包含的文件中执行返回语句以便终止该文件中的处理并返回到脚本称之为