PHP PDO获取对象

PHP PDO获取对象,php,pdo,Php,Pdo,我正试图找出如何从PDO获取到我的自定义类,以及通常的PDO到对象API,并且发现缺少合适的文档令人沮丧。大多数选项仅作为一个选项记录,而示例都使用数组中的抓取。 那么,有人能解释一下这些是如何使用的吗: PDO::FETCH_OBJ PDO::FETCH_类 PDO::FETCH_类类型 PDO::将_读入 PDO::获取_LAZY PDO语句::fetch PDO语句::fetchObject PDOStatement::setFetchMode 如果可能的话,我想要一个关于如何使用每个

我正试图找出如何从PDO获取到我的自定义类,以及通常的PDO到对象API,并且发现缺少合适的文档令人沮丧。大多数选项仅作为一个选项记录,而示例都使用数组中的抓取。
那么,有人能解释一下这些是如何使用的吗:

  • PDO::FETCH_OBJ
  • PDO::FETCH_类
  • PDO::FETCH_类类型
  • PDO::将_读入
  • PDO::获取_LAZY
  • PDO语句::fetch
  • PDO语句::fetchObject
  • PDOStatement::setFetchMode
如果可能的话,我想要一个关于如何使用每个函数/常量获取对象的一般性解释,或者它们之间的区别是什么,以及如何获取到我的类中的具体答案,例如,获取到:

class MyRow {
  public $col1, $col2;
}

准备语句后,将PDOStatement::setFetchMode与PDO::FETCH_类一起使用:

$stmt = $pdo->query('SELECT col1, col2 FROM table');
$stmt->setFetchMode(\PDO::FETCH_CLASS, 'MyRow');
$obj = $stmt->fetch();

以下是我设法弄明白的:

常数
  • PDO::FETCH_OBJ
    用于获取未命名(“匿名”)对象的新实例

  • PDO::FETCH_类
    用于获取现有类的新实例(列名应与现有属性匹配,或应使用
    \u set
    接受所有属性)。设置属性后将调用该类的构造函数

  • PDO::FETCH_类类型
    FETCH\u CLASS
    (按位或)一起使用时,要创建其实例的类的名称位于第一列,而不是提供给函数

  • PDO::将_提取到
    FETCH\u class
    相同类型的类一起使用(必须将所有列作为属性名处理),但会更新现有对象,而不是创建新对象

  • PDO::FETCH_LAZY
    我不知道这有什么用

功能
  • PDO语句::fetch
    常规的get-a-row命令。我不知道如何将它与
    FETCH_CLASS
    FETCH_INTO
    一起使用,因为没有任何方法可以传递类名/实例

  • PDO语句::fetchObject
    执行
    获取类
    获取到
    的方法,包括传递构造函数参数。不带参数是
    FETCH\u OBJ
    的缩写

  • PDO语句::setFetchMode
    一种设置默认获取模式的方法,以便在不使用参数的情况下调用
    pdostation::fetch



这是我能想到的最好的办法。我希望它能帮助其他人(我需要
fetchObject
方法)

这能做什么?它是创建实例还是分配给现有实例?这将创建一个实例。这肯定会调用构造函数吗?它在填充获取的属性后调用构造函数。要避免这种情况,请使用
PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE