gpt4 book ai didi

PHP命名空间困惑,找不到类

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:13 24 4
gpt4 key购买 nike

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

Info: It is the first time I am extending class using namespace. Also nested namespace is new to me. DB\CRUD So may be I am doing completely wrong with namespace.

错误信息:

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

数据库类

文件:AT_Database.php

namespace DB;

class AT_Database
{
...
}

增删改查类

文件:AT_CRUD.php

namespace DB\CRUD;


use DB\AT_Database;

class AT_CRUD extends AT_Database
{

public function __construct()
{

}

}

最佳答案

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

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

正如我在其中一条评论中提到的,我正在使用 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 所以我必须将类实例化到或使用依赖注入(inject)之类的东西,正如@prehfeldt 在他的评论中提到的.

关于PHP命名空间困惑,找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com