PHP PDO извлечение в объекты

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

Итак, кто-то может объяснить, как они используются:

PDO :: FETCH_OBJPDO :: FETCH_CLASSPDO :: FETCH_CLASSTYPEPDO :: FETCH_INTOPDO :: FETCH_LAZYPDOStatement :: выборкиPDOStatement :: fetchObjectPDOStatement :: setFetchMode

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

class MyRow {
  public $col1, $col2;
}

Ответы на вопрос(2)

: setFetchMode с PDO :: FETCH_CLASS:

$stmt = $pdo->query('SELECT col1, col2 FROM table');
$stmt->setFetchMode(\PDO::FETCH_CLASS, 'MyRow');
$obj = $stmt->fetch();
 Brendan Smith18 окт. 2012 г., 02:28
Это создаст экземпляр.
 Jarek Jakubowski03 июл. 2015 г., 11:44
Он вызывает конструктор ПОСЛЕ заполнения запакованных свойств. Чтобы избежать этого, используйтеPDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE
 Baruch14 окт. 2012 г., 14:17
Что это делает? Создает ли он экземпляр или назначает существующий?
 MrMesees23 мар. 2015 г., 07:17
Это определенно вызывает конструкцию?
Решение Вопроса

Константы

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, в том числе передавая аргументы конструктора. Без аргументов это сокращение для.FETCH_OBJ

PDOStatement :: setFetchMode

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

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

Ваш ответ на вопрос