我发现的这个PHP代码片段有什么问题?得到未定义变量'obj'


What's wrong with this PHP code snippet I found? I get undefined variable 'obj'

我只是想问一下我找到的这三个代码片段以及PHP如何处理它们:

1)一个带有静态方法调用的PHP类(tmp.class.php):

<?php
class Dummy {
        public function sayHello()
        {
            echo "HELLO FROM DUMMY";
        }
        public static function requireScript() {
            require __DIR__ . "/tmp2.php";
        }
}
Dummy::requireScript();

2)另一个文件(tmp1.php),实例化前面定义的类:

<?php
require_once __DIR__. "/tmp.class.php";
$obj = new Dummy;
?>

3)另一个文件(tmp2.php),使用前面的类实例:

<?php
require_once __DIR__ ."/tmp1.php";
$obj->sayHello();
?>

现在我知道,作为requireScript()方法有一个要求调用在它,事实上tmp2.php包含两次,我是对的吗?但是,当我使脚本运行(在浏览器中打开tmp2.php文件),我得到一个注意:未定义的变量:obj,然后当然是一个致命的错误,因为sayHello();

$obj不应该对第二个所需的tmp2.php脚本可用吗?这段代码有什么问题?

感谢关注!

实际上没有人应该这样构建PHP应用程序。你不应该把require/include放在很多文件中。在简单的应用程序中,您应该在文件的开头运行require/include以获得所需的一切。在更复杂的应用程序中,您应该简单地使用面向对象编程,并在需要时使用自动加载器加载类定义