我在自己的文件中有两个类在同一个文件夹中.但是当我试图将一个扩展到另一个时,它会给命名空间和类找不到错误.
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/...
DB类
namespace DB; class AT_Database { ... }
CRUD课程
namespace DB\CRUD; use DB\AT_Database; class AT_CRUD extends AT_Database { public function __construct() { } }
这可能是一个愚蠢的错误,或者可能是我忽略了它(我不应该作为程序员)并且正在加载类的序列.
原文链接:https://www.f2er.com/php/445221.html可能是不值得作为一个答案,但只是偶然添加它可以帮助那些犯这样的错误的人.
正如我在其中一篇评论中提到的,我使用glob来自动加载要包含的所有类文件.
foreach ( glob( $this->classes_dir . "/*.PHP" ) as $class ) { include_once $class; }
现在我的文件名是AT_CRUD.PHP和AT_Database.PHP.在这里,我意识到PHP按字母顺序加载文件.所以,当我将AT_Database类扩展到AT_CRUD时,它永远找不到.
这只是因为PHP首先加载AT_CRUD而不是AT_Database所以要么我必须将类实例化为或者使用类似依赖注入的东西,如@prehfeldt在他的评论中提到的那样.