【问题标题】:What is the benefit of using PDO::FETCH_CLASS and when to use it [closed]使用 PDO::FETCH_CLASS 有什么好处以及何时使用它[关闭]
【发布时间】:2015-04-12 04:02:16
【问题描述】:

我想知道什么时候必须使用 PDO::FETCH_CLASS,使用它而不是使用其他 fetch 方法(如 PDO::FETCH_ASSOC)有什么好处?

【问题讨论】:

  • 你的其他获取方法是什么?
  • 哦,您的意思是您想知道使用PDOStatement::fetch(PDO::FETCH_ASSOC)PDOStatement::fetch(PDO::FETCH_OBJ) 的区别和好处?
  • 是的。与 PDO::FETCH_CLASS 比较
  • 好吧,我的评论很愚蠢;但这一切都在这里解释:php.net/manual/fr/pdostatement.fetch.php
  • FETCH_CLASS 返回一个新实例 => 你可以调用一些函数。 FETCH_ASSOC 返回一个数组 => 你可以打印一些结果。很多情况下你会想要一个实例而不是值数组

标签: php pdo fetch


【解决方案1】:

这取决于您喜欢或需要什么。

PDO::FETCH_ASSOC 使 fetch 返回一个关联数组。

PDO::FETCH_OBJ 类似,但返回一个带有属性的“匿名对象”。请注意,实际上是“匿名对象”is the wrong term,但 PHP 文档also uses it。它指的是继承自StdClass 的对象。

PDO::FETCH_CLASS 是它的变体。它不使用 StdClass,而是创建一个特定(给定)类类型的对象,并尝试将列值映射到该对象的属性。

如果您不想使用 StdClass,但想使用“智能”对象,这很有用。例如,如果您有一个包含 FirstName 和 LastName 的 User 表,您可以让 PDO::fetch 返回一个 User 对象,该对象实现了一个返回连接的名字和姓氏的 getFullName 方法。 StdClass 不会有这个方法,你的数组也不会。

但是,如果您喜欢使用数组,则无需切换到其他两个中的任何一个。使用你最喜欢的。

【讨论】:

  • 所以如果在某些情况下我需要文章表中的一些信息,最好使用 assoc 而不是将其提取到一个类中?
  • 没有好坏之分。这只是一个意见问题。你可以使用任何一个。
  • 我明白了,所以我们喜欢使用哪种风格?
  • 如果你想使用 ORM 来访问你的数据,你可以使用PDO::FETCH_CLASS,例如。
  • 好的,谢谢你的解释
猜你喜欢
  • 2017-12-07
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多