在构造类之前,PDOStatement :: fetchObject如何设置属性?

When I call this function, and add a constructor to my class, all my class properties are already set. How is that possible -- I thought you had to construct a class before you could set its properties?

I guess that PDO uses some internal code to create an object without invoking the constructor. However it is possible to instance a new object without calling the constructor even in pure PHP, all you have to do is to deserialize an empty object:

class SampleClass {
    private $fld = 'fldValue';

    public function __construct() {
        var_dump(__METHOD__);
    }

    // getters & setters
}

$sc = unserialize(sprintf('O:%d:"%s":0:{}', strlen('SampleClass'), 'SampleClass'));
echo $sc->getFld(); // outputs: fldValue, without calling the construcotr

As of PHP 5.4.0+ ReflectionClass::newInstanceWithoutConstructor() method is available in reflection API.

In php, any array can be cast to an object. My assumption is pdo creates an associative array an then jus casts it. I dont know if he constuctor is called on cast...

Actually, a cast isnt the right word, a conversion occurs behind the scenes. Read this. Blurb on what happens: http://php.net/manual/en/language.types.object.php