命令空间和类加载的麻烦

时间:2014-05-15 11:51:24

标签: php namespaces autoloader

我正在构建自定义CMS并设置了自动加载器,并且已经适应了名称空间的使用。在大多数情况下,正确加载的东西,但在某些情况下,PHP报告它找不到类,类文件已包含在内。

一旦包含文件(使用require),它也应该被实例化。 父控制器是实例化的,然后子控制器尝试实例化它自己的一些依赖项。

$this->auth     = new \Modules\Auth\RT\Auth();

这将在/modules/auth/rt/auth.php中查找一个文件,它确实正确,并且该类已正确实例化。

Auth的命名空间是:

namespace Modules\Auth\RT;

auth类试图加载自己的依赖项,特别是模型。

$this->auth_model   = new Models\ModelAuth();

此处要包含的文件位于/modules/auth/rt/models/modelauth.php 它已成功包含在内,但这就是PHP说我无法找到这个类的地方。

Fatal error: Class 'Modules\Auth\RT\ModelAuth' not found in /Users/richardtestani/Documents/ShopOpen-Master/shopopen/modules/auth/rt/auth.php on line 12

即使包含该文件,会导致该类未被实例化的原因是什么? 谢谢 富

2 个答案:

答案 0 :(得分:0)

试试这个:

$this->auth_model   = new Modules\Auth\RT\Models\ModelAuth();

答案 1 :(得分:0)

试试这个:

$this->auth_model = new \Modules\Auth\RT\Models\ModelAuth(); 要么 $this->auth_model = new Models\ModelAuth();
当您在此命名空间\Modules\Auth\RT

有一个Missing \,所以代码试图包含命名空间两次;

FOR REAL;)