Cuando los objetos son recuperados mediante PDO::FETCH_CLASS,
las propiedades del objeto se asignan primero, luego se llama al constructor
de la clase. Sin embargo, cuando PDO::FETCH_PROPS_LATE también está especificado,
este orden se invierte, es decir, el constructor se llama primero, luego
las propiedades son asignadas.
<?php
class Person
{
private $name;
public function __construct()
{
$this->tell();
}
public function tell()
{
if (isset($this->name)) {
echo "Soy {$this->name}.\n";
} else {
echo "Aún no tengo nombre.\n";
}
}
}
$sth = $dbh->query("SELECT * FROM people");
$sth->setFetchMode(PDO::FETCH_CLASS, 'Person');
$person = $sth->fetch();
$person->tell();
$sth->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Person');
$person = $sth->fetch();
$person->tell();
?>
Resultado del ejemplo anterior
es similar a:
Soy Alice.
Soy Alice.
Aún no tengo nombre.
Soy Bob.