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

如果方法体包含在另一个php文件中,则无法返回值?,php,include,Php,Include,我正在构建一个类,它的一些方法体在其他php文件中定义。 我必须这样做,因为尽管大多数函数都很小,很正常,而且是手工编写的,但有几个函数需要由我编写的另一个脚本自动生成。 问题是,尽管调用了这些方法,但这些方法中的返回语句似乎没有执行。 总体结构如下: MyClass.php: <?php class MyClass { public function foo() { include "myclass-foo-body.php"; } } ?&g

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

MyClass.php:

<?php

class MyClass
{
    public function foo()
    {
        include "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.

?>
<?php

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

?>

myclass-foo-body.php:

<?php

class MyClass
{
    public function foo()
    {
        include "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.

?>
<?php

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

?>

test.php:

<?php

class MyClass
{
    public function foo()
    {
        include "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.

?>
<?php

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

?>

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


谢谢

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

包含文件中的
返回
终止对包含文件的处理

可以在包含的文件中执行return语句 以终止该文件中的处理并返回脚本 这就叫它


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

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

在一个类中永远不应该包含这样的逻辑。。。。如果它需要包含在sevarel方法中,那么您可以使用一个helper类,以便在一个地方定义它;如果您的代码正在编写代码,则使用闭包