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

Cod*_*ver 5 php namespaces

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

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

错误信息:

Fatal error: Class 'DB\AT_Database' not found in /var/www/...
Run Code Online (Sandbox Code Playgroud)

DB类

文件:AT_Database.php

namespace DB;

class AT_Database
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

CRUD课程

文件:AT_CRUD.php

namespace DB\CRUD;


use DB\AT_Database;

class AT_CRUD extends AT_Database
{

    public function __construct()
    {

    }

}
Run Code Online (Sandbox Code Playgroud)

Cod*_*ver 3

这可能是一个愚蠢的错误,或者可能是我忽略了它(作为程序员我不应该这样做),那就是类的加载顺序。

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

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

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

现在我的文件名是AT_CRUD.phpAT_Database.php。这里我意识到php按字母顺序加载文件。所以当我将AT_Database类扩展到AT_CRUD它时从未找到。

这只是因为 phpAT_CRUD首先加载AT_Database,所以我必须将类实例化,或者使用 @prehfeldt 在他的评论中提到的依赖注入之类的东西。