2014-07-19 87 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時自動完成將起作用碼。