php - 数据访问层和数据库抽象层的区别和重构数据库类

标签 php mysql oop data-access-layer database-abstraction

<分区>

Possible Duplicate:
What is the difference between Data Abstraction Layer & Data Acess Layer?

我刚读完this article在 nettuts 上。我有点困惑。 数据访问层数据库抽象层有什么区别?

此外,我应该为此创建自己的自定义类还是使用 PDO 更好?

我有一个 DatabaseOps 类,它执行所有 CRUD 操作。其他类(例如 User)继承自它并使用此类的方法来执行 CRUD 操作。我有另一个名为 Database 的类,它执行打开连接、关闭连接、获取数组、确认查询等操作。 我应该将它们写入一个类(数据访问/抽象层)吗?哪个更好?

最佳答案

数据访问层通常采用 ORM 的形式。这允许您将表映射到对象。它提供了高层次的抽象,因此您不必担心原始 sql。 http://en.wikipedia.org/wiki/Data_access_layer

数据抽象层创建一个 API,使数据访问后端独立。无论您使用的是 postgres、mysql、sqlite 等,它都可以让您查询这些数据库而不必担心具体细节。 http://en.wikipedia.org/wiki/Database_abstraction_layer

如果您正在创建一个其他人可以使用的平台,并且他们可以选择他们的数据库后端,则需要一个抽象层,否则我不会担心。

每当我对 Web 项目结构有疑问时,我总是查看流行的 MVC 框架,看看它们是如何处理这些问题的。 CakePHP、CodeIgniter、Kohana 都是创建可扩展的面向对象框架的绝佳示例。当涉及到此类问题时,它们是不可或缺的资源。

关于php - 数据访问层和数据库抽象层的区别和重构数据库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9262752/

相关文章:

PHP 在 URL 中传递两个 id

php - 如果数组元素未定义,则设置为 null(默认)

php - 从数组中分割图像

javascript - 如何从多个元素复制属性值并将每个元素复制到不同的元素?

mysql - DB 列中多个值的唯一性检查

c# - 这个。与基地。对于继承的 protected 非虚拟方法?

mysql - 在mysql中显示周数

php - 抛出数据库错误异常时可以回滚事务吗?

oop - 这种情况是对抽象的过度使用吗?

php - 从 PHP 中的静态方法访问私有(private)