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

PHP命名空间混乱,找不到类,php,namespaces,Php,Namespaces,我在自己的文件中的同一文件夹中有两个类。但当我试图将一个扩展到另一个时,它给出了名称空间和类NotFound错误 信息:这是我第一次使用名称空间扩展类。嵌套的名称空间对我来说也是新的DB\CRUD我可能在做什么 名称空间完全错误 错误消息: 数据库类 文件:AT_Database.php 积垢级 文件:AT_CRUD.php 这可能是一个愚蠢的错误,也可能是我忽略了它(作为一个程序员,我不应该这样做),这就是类的加载顺序 也许它不值得作为一个答案,但只是在将来偶然添加,它可以帮助犯此类错误的人。

我在自己的文件中的同一文件夹中有两个类。但当我试图将一个扩展到另一个时,它给出了名称空间和类NotFound错误

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

错误消息: 数据库类 文件:AT_Database.php

积垢级 文件:AT_CRUD.php


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

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

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

foreach ( glob( $this->classes_dir . "/*.php" ) as $class ) {
    include_once $class;
}
现在我的文件名是
AT_CRUD.php
AT_Database.php
。在这里,我意识到php按字母顺序加载文件。因此,当我将
AT_数据库
类扩展到
AT_CRUD
时,它从未被找到


这只是因为php在_CRUD上首先加载
,而不是在_Database
上加载
,所以要么我必须将该类实例化为@prehfeldt在其评论中提到的类,要么使用类似依赖注入的内容。

请给出确切的错误消息!另外,您是
包含
还是自动加载AT_Database.php文件?我使用
(glob($this->classes_dir./*.php)包含该类
我添加了有问题的错误消息。请看一看。另外,如果你精简
\uu autoload
会比我使用的更好。请注意:扩展数据库类是一种糟糕的编码风格。你应该喜欢@RST没有任何区别。@CodeLover是的,最好的方法是使用依赖项注入模式将
AT_Database
导入
AT_CRUD
。有许多依赖项注入容器。例如,这是一个非常轻量级的容器。解释得很好。这说明了我更喜欢自动加载而不是此类包含的另一个很好的原因:)
namespace DB;

class AT_Database
{
    ...
}
namespace DB\CRUD;


use DB\AT_Database;

class AT_CRUD extends AT_Database
{

    public function __construct()
    {

    }

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