我遇到了一个奇怪的问题。
在类Node中我需要章节的一些功能,所以我在Node.php中包含了Chapter.php文件,如下所示:
Node.php文件:
require_once('Model.php');
require_once('Chapter.php');
class Node extends Model {
...
}
Chapter.php文件:
require_once('Node.php');
class Chapter extends Node {
...
}
错误:
Fatal error: Class 'Node' not found in Chapter.php
为什么找不到Node类?有什么方法可以解决这个问题?
答案 0 :(得分:4)
以下是您的代码正在执行的操作:
require_once
,所以没有必要再这样做了Node
最好的解决方案是将Node中所需的任何功能从其他地方转移到Node中。课程不应该取决于孩子的功能。
答案 1 :(得分:1)
您应该考虑使用autoloader
例如,将它放在应用程序开头的某个地方
function my_autoloader($class) {
include 'classes/' . $class . '.php';
}
spl_autoload_register('my_autoloader');
然后当你
new Chapter();
如果该类尚未加载,PHP将自动包含chapter.php
。在尝试加载chapter.php
时,它会意识到它需要一个名为Node
的类,如果该类尚未加载,则会包含node.php
等。