PHP PDO выборка в объекты

Я пытаюсь выяснить, как извлечь из PDO в свой пользовательский класс и, в общем, API PDO-to-object, и я считаю, что недостаток достойной документации расстраивает. Большинство параметров только задокументированы как опция, в то время как все примеры используют выборку в массивы.
Итак, кто-нибудь может объяснить, как они используются:

  • PDO :: FETCH_OBJ
  • PDO :: FETCH_CLASS
  • PDO :: FETCH_CLASSTYPE
  • PDO :: FETCH_INTO
  • PDO :: FETCH_LAZY
  • PDOStatement :: выборки
  • PDOStatement :: fetchObject
  • PDOStatement :: setFetchMode

Если возможно, я хотел бы получить общее объяснение того, как каждая функция / константа используется для извлечения объектов или каких различий, а также конкретный ответ на вопрос о том, как я получаю в свой класс, например:

class MyRow { public $col1, $col2; } 

Вот что мне удалось выяснить:

Константы

  • PDO :: FETCH_OBJ
    Используется для ввода нового экземпляра неназванного («анонимного») объекта

  • PDO :: FETCH_CLASS
    Используется для ввода в новый экземпляр существующего класса (имена столбцов должны соответствовать существующим свойствам, или __set должен использоваться для принятия всех свойств). Конструктор класса будет вызываться после того, как будут установлены свойства.

  • PDO :: FETCH_CLASSTYPE
    Используется с FETCH_CLASS (побитовое ИЛИ), имя класса для создания экземпляра находится в первом столбце, а не в качестве функции.

  • PDO :: FETCH_INTO
    Используется с тем же типом класса, что и FETCH_CLASS (должен обрабатывать все столбцы как имена свойств), но обновляет существующий объект, а не создает новый.

  • PDO :: FETCH_LAZY
    Я не знаю, что это делает.

функции

  • PDOStatement :: выборки
    Регулярная команда get-a-row. Я не знаю, как использовать это с FETCH_CLASS или FETCH_INTO поскольку не существует способа передать имя класса / экземпляр.

  • PDOStatement :: fetchObject
    Способ выполнения FETCH_CLASS или FETCH_INTO , включая прохождение конструкторов args. Без args это сокращение для FETCH_OBJ .

  • PDOStatement :: setFetchMode
    Способ установки режима выборки по умолчанию, так что PDOStatment::fetch можно вызвать без аргументов.


Это лучшее, что мне удалось выяснить. Я надеюсь, что это поможет кому-то другому (мне нужен метод fetchObject )

После подготовки инструкции используйте PDOStatement :: setFetchMode с PDO :: FETCH_CLASS:

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