您在一个“运行”中包含2个文件.可以这样想:所有包含的文件都由PHP组合在一起创建一个大脚本.每个包含或要求提取文件,并将其内容粘贴到一个大脚本中.
您包含的两个文件都需要相同的文件,该文件声明了Database类.这意味着PHP生成的大脚本如下所示:
class Message
{}
class Database
{}//required by message.php
class User
{}
class Database
{}//required by user.php
如您所见,类数据库被声明两次,因此出错.
目前,快速修复可以替换require(‘database.php’);陈述:
require_once 'database.php';
哪个检查以前是否未包含/要求该特定文件.如果之前已经包含/需要,PHP将不再需要它.
一个更明确的,恕我直言,更好的解决方案是注册自动加载器功能/类方法,并让该代码处理业务.
有关如何注册自动加载器can be found in the docs的更多信息.如果你沿着这条路走下去,你可能想看看有关类名和命名空间here的编码标准.如果你符合这些标准,你就不必写了你自己的自动加载器,可以简单地使用Symfony2的通用类加载器,或任何其他订阅PHP-FIG标准的框架(比如CodeIgnitor,Zend,Cake ……你可以命名)