我一直想创建一个使用 Prestashop 的 DB 类而不是直接实例化数据库句柄的附加 cron 脚本,但我似乎无法弄清楚“Db::getInstance”通常引用的“Db”类在哪里()" 调用被定义。
classes/Db.php 定义了一个抽象的 DbCore 类。如您所见,MySQLCore 扩展了 Db,但是 Db 从未在任何地方定义:
[/home/xxxx/www/shop/classes]# grep -r "extends Db" ../
../classes/MySQL.php:class MySQLCore extends Db
根据 Prestashop 论坛上的另一个帖子,抽象 DbCore 类在位于 override/classes/db 的类中实现,但是该目录不存在。
[/home/xxxx/www/shop/override]# cd ../override/
[/home/xxxx/www/shop/override]# ls
./ ../ classes/ controllers/
[/home/xxxx/www/shop/override]# cd classes/
[/home/xxxx/www/shop/override/classes]# ls
./ ../ _FrontController.php* _Module.php* _MySQL.php*
我们的商店正在工作,所以显然我错过了一些东西。我们正在运行 Prestashop 1.4.1,因此文档可能不再适用。
很明显,在代码库中的许多地方都使用了 Db 类中的函数,但是最后一次通过代码 grep 什么也没找到:
grep -rwI "Db" . | grep -v "::"
./modules/productcomments/productcommentscriterion.php:require_once(dirname(__FILE__).'/../../classes/Db.php');
./classes/MySQL.php:class MySQLCore extends Db
./classes/Db.php: * Get Db object instance (Singleton)
./classes/Db.php: * @return object Db instance
./classes/Db.php: * Build a Db object
有什么我想念的吗?这个神奇的 Db 类是从哪里来的?