- Создаётся объект без вызова конструктора.
- В объекте ищется поле с именем, совпадающим с именем колонки.
- Если поле найдено, вызывается хук
set
. Даже если у поля область видимости private.
- Если поле найдено, а хука нет, в поле просто сетается значение. Даже если у поля область видимости private.
- Если не найдено, вызывается магический метод
__set
- Если
__set
отсутствует, создаётся динамическое поле с именем колонки.
- Вызывается конструктор.
PDO::FETCH_PROPS_LATE
не работает совместно с методом
fetchObject
. Конструктор по-прежнему вызывается только в конце. Чтобы переставить вызов конструктора наверх, нужно вызывать методы
setFetchMode
и
fetch
:
$stmt = $pdo->query('SELECT * FROM tbl_name');
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, $class, $constructorArgs);
$obj = $stmt->fetch();