要求文件内部函数PHP


require file inside function PHP

我有两个类,A类和B类,在A类中的函数中,我想调用B中的函数,但它也需要另一个文件中的常量。在需要config.php和classB.php文件之后,我能够创建类B的实例,但是当我试图调用B中的函数时,它给了我一个警告,说常量尚未定义。

在config . php:

$constant = 'blah';

在A类中,我有:

function functionA() {
    require_once "config.php";
    require_once "classB.php";
    $b = new B();
    $b -> functionB($constant);
}

函数B的调用给出了一个错误,说$constant没有定义,但是当我调用new B()时没有问题。我做错了什么吗?

Aron是正确的。在这种情况下,您想使用includerequire。你必须确保你所包含的文件中没有函数或类声明。

之所以会发生这种情况,是因为require不会在每次调用该方法时都发生,只在第一次调用时发生。后续对该方法的调用将导致未定义变量错误。

附加提示:您可以从包含的文件返回值,将它们直接赋值给变量

A.php:

return 'abc';

B.php:

Class B {
    public static function load()
    {
        $x = include 'A.php';
        var_dump($x);
    }
}

我想象你的代码应该是这样的:

function functionA() {
    require "config.php";
    require_once "classB.php";
    $b = new B();
    $b -> functionB($constant);
}

使用语句include 'config.php';

如果你的config.php文件只有变量声明,