【发布时间】:2015-04-21 08:03:40
【问题描述】:
我正在一个使用 mySQL 和 SQLite DB 的项目中工作。我的目标是使代码能够与两种数据库类型一起使用。我为 mySQL 开发了代码,使用 mysqli 类,现在我想修改它以使其也适用于 SQLite3 对象。
SQLite3 类实现了与mysqli 相同的方法(至少是我使用的方法),但有时使用不同的名称。例如,mysqli::fetch_array() 变为 SQLite3::fechArray()。所以我正在扩展 SQLite3 和 SQLite3Result 类来实现我需要的方法。例如:
class SQLite3ResultEx extends SQLite3Result {
public function fetch_array() {
return parent::fetchArray();
}
}
问题是我不知道如何扩展SQLite3 类的响应以获得我自己的SQLite3Response 扩展类。我的意思是:
class SQLite3Ex extends SQLite3 {
public function __construct($filename, $flags = null, $encryption_key = null) {
return parent::__construct($filename, $flags, $encryption_key);
}
public function query($query) {
$res = parent::query($query);
return $res;
}
}
现在$res 是一个SQLite3Result 对象,但我需要它变成一个SQLite3ResultEx 对象(我自己的扩展类)。
【问题讨论】:
-
我可以推荐一本好书:php.net/manual/en/intro.pdo.php
-
是的,我明白了。正确的方法是使用我自己的 PDO 类,这样可以确保所有方法都可以独立于我使用的数据库使用。我会尝试这样做。非常感谢您的回答。
-
其实我建议使用PHP内置的PDO类。当它准备好使用时,你为什么要自己编写它?
-
这不是我的意思。我正在谈论做一个使用 PDO 类的类(也许扩展它),而不是创建一个完整的 PDO 类。这样,我可以随时添加更改目标数据库的方法。
标签: php object sqlite class-extensions