データベース ハンドルを直接インスタンス化するのではなく、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 クラスはどこから来たのですか?