2014-07-19 46 views
0

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

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

而且moodle_database

abstract class moodle_database 

怎么可能创建抽象类的实例?即使moodle_database被某些其他类扩展,并且$ DB是该类的对象,也可以认为事情很简单。

回答

1

在lib/setup.php中,调用了setup_DB(),它在lib/dmllib.php中定义。

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

我不知道你找到的代码行的确切位置,但我怀疑它永远不会实际运行,只是在那里提供对IDE的类型提示,所以在写入moodle时自动完成将起作用码。