为什么在PHP中使用ORM?

时间:2011-04-08 08:04:38

标签: php oop orm

我最近开始学习ORM,一个跳到我心中的问题:

PHP应用程序主要使用MySql和Sqlite,几乎所有PHP服务器都安装了,因此在PHP中使用ORM是否值得与数据库无关?

性能怎么样?

6 个答案:

答案 0 :(得分:6)

数据库独立性不是使用ORM的主要原因。你想拥有的是数据库的一般抽象。这可能意味着:使用简单,开发速度更快,数据库独立性......在任何情况下,通常都值得使用ORM。如果您的应用程序耗尽了所有CPU功能,那么您可以使用一些普通的SQL来优化某些查询。我想这是一种罕见的情况。

你可能想读这个: What are the advantages of using an ORM?

答案 1 :(得分:4)

您可以选择使用ORM的原因有几个,我可以想到一些:

  • 大多数ORM将使您能够验证INSERT和UPDATE的数据。
  • ORM将允许您将数据库中的列名映射到数据库中的工作字段名称。如果您正在使用其他人设计的并且具有奇怪列名的数据库,那么这可能很方便。
  • 他们也会很好地处理你们之间的关系。 (例如,如果你在其中一个列上获取一个1:m关系的行,你将获得相关项的子数组,而不必手动执行另一个查询)。

使用ORM的大多数原因与速度/易于开发有关。

在性能方面,我之前使用过php的教义,与仅提取行相比,水合作用产生了巨大的开销。

答案 2 :(得分:3)

对于数据库独立性(和性能),请使用PDO。它是内置的,它准备好的语句非常适合防止SQL注入漏洞。

如果你坚持使用O / RM,它甚至会带来一些OO风格......请参阅PDOStatement::fetch(以及其他一些fetchXxx方法)。

答案 3 :(得分:2)

ORM有点浪费时间。这是奇怪的,因为它旨在节省你的时间:)但它是真的。我有机会使用多种语言的ORM,这是不值得的。基本上有两种类型的项目:

  1. 简单的项目有很少的表(有时甚至是1个表),没有认证等,可以说只是简单的独立表
  2. 包含许多连接表,视图和其他内容的复杂项目。可能还有更多的数据库。

    1. 如果您熟悉设置以及如何使用ORM,您可以随意使用ORM,但是您永远不知道项目要求是否会发生变化而您最终会感到遗憾的是您曾经踩过ORM字段:)
    2. 不要使用ORM,因为您将花费更多时间修复ORM提供的“自动生成”内容。我相信现在有些ORM非常先进,但是ORM就像(狂野猜测)10年(实际上我相信它更多)?显然它有点死路一条。它不会取代未来的标准方式,今天的趋势是NOSQL数据库等。
  3. 在我看来,由于内部使用它的框架,ORM仍然存在。和表现?我不确定(因为我不再使用它了)但我相信性能也可能是一个问题。您必须为从数据库查询中抽象出来的事实支付至少一些价格吗?我认为ORM在纸面上是个好主意但是效果不好。

答案 4 :(得分:1)

如果您的服务器运行PostgreSql或SQL Server(另外两个非常常见的数据库引擎),该怎么办?

如果要连接到旧数据库,该怎么办?

另外,您是否曾经维护过直接连接数据库的大型项目?当我打开一个充满mysql_query个电话的文件时,它让我颤抖。

表现方面......取决于有问题的ORM。我在.NET环境中对它们比较熟悉,当然在这种环境中,性能差异很大,但这通常是与功能的权衡。

使用ORM将增加代码与数据库之间的正交性 - 这将使开发和维护更容易。在数据库之间切换的能力是一个好处,但肯定不是唯一的原因。

答案 5 :(得分:1)

使用ORM减轻了编写与打开数据库连接,汇集连接,准备语句,执行语句,将执行语句的结果映射到更有意义的事务以及最后关闭连接相关的样板代码的冗余。 / p>

执行诸如实例化对象,设置其属性然后对对象调用保存操作等操作要简单得多。仅使用ORM就可以使用ORM手动编码与数据库交互所需的许多步骤。

此外,使用干净的ORM,可以交换数据库,只需对应用程序进行最小的更改。

希望有所帮助。