Moodle数据库API - $DB是一个抽象类的对象


Moodle Database API - $DB is an object of abstract class

我是PHP的新手,已经从Moodle开始了。在Moodle中,我发现有一个全局对象$DB, moodle_database类的实例。我发现moodle_database是一个抽象类。moodle_database的各种功能也都是抽象的。

global $DB;
$DB = new moodle_database();

And moodle_database:

abstract class moodle_database

如何创建抽象类的实例?即使moodle_database是由其他类扩展的,并且$DB是该类的对象,事情也可以被认为是简单的。

在lib/setup.php中,有一个对setup_DB()的调用,它在lib/dmllib.php中定义。

这个,反过来,调用$DB = moodle_database::get_driver_instance()实例化moodle_database的子类。

我不知道您引用的代码行是在哪里找到的,但我怀疑它实际上永远不会运行,只是在那里为ide提供类型提示,因此在编写moodle代码时自动完成将起作用。