1

我正在尝试创建一个用于学习目的的数据库抽象类,您可以通过执行以下操作创建与您拥有驱动程序的任何数据库的多个连接:

//Create multiple database connections
$db1 = new DatabaseFactory("MySQL","root","","localhost");
$db2 = new DatabaseFactory("MySQL","root","","localhost");

或者...

$db = new DatabaseFactory("SQLite");

但是我不得不考虑一下,除非您需要管理与工厂对象的多个连接,否则随着 PDO 的出现真的不需要这样的东西对吗?

我的问题是,您认为对 PDO 进行更多抽象层有用吗?为什么?

4

2 回答 2

1

如果严格考虑数据库级别的操作抽象,而不是 ORM 之类的东西,那么仍然存在不同数据库之间的 SQL 支持问题。

例如,比较 SQLite、Postgre 和 MySQL,它们都支持大部分相同的语法,但它们之间也存在各种差异。

PDO 没有采取任何措施来抽象出平台之间对 SQL 支持的差异。

还有一些其他的东西可以使用另一层隐藏。但是,它是否非常可行有点令人怀疑。考虑例如尝试使用软件来模拟 SQLite 等中的外键检查。

于 2012-01-04T23:53:42.943 回答
0

虽然 PDO 是对旧的 mysql 函数存储桶的重大改进,但它仍然是用于访问数据库的非常低级的 API。

所以是的,在大多数情况下,围绕它包装更高级别的 API 仍然是有意义的。

例如,可以使用更高级别的 API 使 SQL 注入攻击几乎不可能。

于 2012-01-04T23:51:54.583 回答