现在我们有PDO,抽象数据库处理是否有意义?

时间:2012-01-04 23:44:33

标签: php database pdo database-abstraction

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

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

...或

$db = new DatabaseFactory("SQLite");

但是我开始考虑它,除非你需要用工厂对象管理多个连接,否则PDO的出现确实不需要像这样的东西吗?

我的问题是,您认为对PDO进行进一步的抽象层是否有用?为什么?

2 个答案:

答案 0 :(得分:1)

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

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

PDO没有采取任何措施来消除平台之间SQL支持的差异。

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

答案 1 :(得分:0)

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

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

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