Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在PHP中使用ORM?_Php_Oop_Orm - Fatal编程技术网

为什么在PHP中使用ORM?

为什么在PHP中使用ORM?,php,oop,orm,Php,Oop,Orm,我最近开始学习ORM,我突然想到一个问题: PHP应用程序大多使用MySql和Sqlite,几乎所有的PHP服务器都安装了这两个应用程序,所以在PHP中使用ORM独立于数据库是否值得 性能如何?数据库独立性不是使用ORM的主要原因。您想要的是数据库的一般抽象。这可能意味着:使用简单、开发速度更快、数据库独立性。。。在任何情况下,通常使用ORM都是值得的。如果您的应用程序占用了所有的cpu资源,那么您可以使用一些简单的sql来优化某些查询。不过,我想这是一个罕见的案例 您可能需要阅读以下内容: 选

我最近开始学习ORM,我突然想到一个问题:

PHP应用程序大多使用MySql和Sqlite,几乎所有的PHP服务器都安装了这两个应用程序,所以在PHP中使用ORM独立于数据库是否值得


性能如何?

数据库独立性不是使用ORM的主要原因。您想要的是数据库的一般抽象。这可能意味着:使用简单、开发速度更快、数据库独立性。。。在任何情况下,通常使用ORM都是值得的。如果您的应用程序占用了所有的cpu资源,那么您可以使用一些简单的sql来优化某些查询。不过,我想这是一个罕见的案例

您可能需要阅读以下内容:

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

  • 大多数ORM将使您能够验证插入和更新的数据
  • ORMs将允许您将数据库中的列名映射到数据库中的工作字段名。如果您使用的数据库是由其他人设计的,并且具有奇怪的列名,那么这将非常方便
  • 他们也会很好地为你处理人际关系。(例如,如果您获取其中一列上具有1:m关系的行,您将获得相关项的子数组,而无需手动执行另一个查询)
使用ORM的大多数原因与开发的速度/易用性有关


就性能而言,我以前在php中使用过doctrine,与仅获取行相比,它会产生巨大的开销。

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

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

另外,您是否维护过任何直接连接到数据库的大型项目?当我打开一个满是
mysql\u query
调用的文件时,我会浑身发抖

性能方面。。。取决于所讨论的ORM。我在.NET环境中更熟悉它们,当然在那种环境中,性能会有很大的差异,但这通常是在功能上的权衡


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

使用ORM可以减少编写与打开数据库连接、连接池、准备语句、执行语句相关的样板代码的冗余,将执行语句的结果映射到更有意义的内容,最后关闭连接

实例化一个对象,设置其属性,然后调用对象上的保存操作,这样做会更简洁。仅这种值就值得使用ORM,而不是手动编码与数据库交互所需的许多步骤

此外,使用干净的ORM,可以在对应用程序进行最小更改的情况下交换数据库

希望对您有所帮助。

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


如果你被困在O/RM上,它甚至还带有一点OO风格。。。请参阅(以及其他一些fetchXxx方法)。

ORM有点浪费时间。这很奇怪,因为它是为了节省你的时间而设计的:)但这是真的。我有权在几种语言中使用ORM,这是不值得的。基本上有两种类型的项目:

  • 简单的项目集,只有很少的表(有时甚至是一个表),没有身份验证等,比如说只有简单的独立表
  • 包含许多连接的表、视图和其他内容的复杂项目。可能还有更多的数据库

  • 是的,如果您熟悉ORM的设置以及如何使用它,您可以随意使用ORM,但您永远不知道项目需求是否发生了变化,最终您会后悔您曾经踏上过ORM领域:)
  • 不要使用ORM,因为你会花更多的时间来修复ORM提供的“自动生成”功能。我相信现在有些ORM已经相当先进了,但是ORM已经存在了10年了(大概是10年吧)(实际上我相信更多)?很明显,它有点死胡同。未来它不会取代标准方式,现在的趋势是NOSQL数据库等

  • 在我看来,ORM之所以还活着,是因为框架在内部使用了ORM。还有表演?我不确定(因为我不再使用它),但我相信性能也可能是个问题。您必须为从数据库查询中抽象出来的事实付出至少一些代价,对吗?我认为ORM在纸面上是个不错的主意,但效果并不好。

    我个人认为花时间学习它是不值得的。是的,使用它很好的例子很少,但编程的第一条规则是需求会发生变化,最终你会用SQL优化所有东西,你会后悔,所以为什么一开始就要麻烦呢。无论如何,您可以(而且应该!)使用架构模式抽象数据库层。