我正在创建一个用于学习目的的数据库抽象类,您可以通过执行以下操作创建与驱动程序的任何数据库的多个连接:
//Create multiple database connections
$db1 = new DatabaseFactory("MySQL","root","","localhost");
$db2 = new DatabaseFactory("MySQL","root","","localhost");
...或
$db = new DatabaseFactory("SQLite");
但是我开始考虑它,除非你需要用工厂对象管理多个连接,否则PDO的出现确实不需要像这样的东西吗?
我的问题是,您认为对PDO进行进一步的抽象层是否有用?为什么?
答案 0 :(得分:1)
如果严格考虑数据库级操作抽象,而不是像ORM这样的东西,那么不同数据库之间仍然存在SQL支持的问题。
例如,比较SQLite,Postgre和MySQL,它们都支持大部分相同的语法,但是它们之间也存在各种差异。
PDO没有采取任何措施来消除平台之间SQL支持的差异。
还可以使用其他图层隐藏其他一些内容。但是,它是否非常可行是有点可疑的。例如,考虑尝试使用软件来模拟SQLite中的外键检查。
答案 1 :(得分:0)
虽然PDO比旧的mysql函数存储桶有了很大的改进,但它仍然是用于访问数据库的非常低级的API。
所以是的,在大多数情况下,围绕它包装更高级别的API仍然是有意义的。
例如,可以使用更高级别的API来使SQL注入攻击几乎不可能。