我只是想问一下我找到的这三个代码片段以及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以获得所需的一切。在更复杂的应用程序中,您应该简单地使用面向对象编程,并在需要时使用自动加载器加载类定义