PHP命名空间混乱,找不到类

时间:2015-04-20 07:12:28

标签: php namespaces

我在自己的文件中有两个类在同一个文件夹中。但是当我试图将一个扩展到另一个时,它会给命名空间和类找不到错误。

  

信息:这是我第一次使用命名空间扩展类。嵌套命名空间对我来说也是新的。 DB\CRUD我可能正在这样做   命名空间完全错误。

错误消息:

Fatal error: Class 'DB\AT_Database' not found in /var/www/...

DB class

文件:AT_Database.php

namespace DB;

class AT_Database
{
    ...
}

CRUD类

档案:AT_CRUD.php

namespace DB\CRUD;


use DB\AT_Database;

class AT_CRUD extends AT_Database
{

    public function __construct()
    {

    }

}

1 个答案:

答案 0 :(得分:3)

这可能是一个愚蠢的错误,或者可能是我忽略了它(我不应该作为程序员)并且正在加载该类的序列。

可能不值得作为答案,但只是偶然添加它可以帮助犯错误的人。

正如我在其中一条评论中提到的,我正在使用glob自动加载要包含的所有类文件。

foreach ( glob( $this->classes_dir . "/*.php" ) as $class ) {
    include_once $class;
}

现在我的文件名是AT_CRUD.phpAT_Database.php。在这里,我意识到php按字母顺序加载文件。因此,当我将AT_Database课程延伸到AT_CRUD时,它从未找到。

这只是因为php首先加载AT_CRUD而不是AT_Database所以要么我必须将类实例化为或者使用依赖注入这样的东西,如@prehfeldt在他的评论中提到的那样。