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

时间:2012-05-28 00:07:00

标签: php

当我调用this function并向我的类添加构造函数时,我的所有类属性都已设置。怎么可能 - 我认为你必须在设置它的属性之前构造一个类?

2 个答案:

答案 0 :(得分:1)

我猜PDO使用一些内部代码来创建一个对象而不调用构造函数。但是,即使在纯PHP中,也可以在不调用构造函数的情况下实例化新对象,您所要做的就是反序列化一个空对象:

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

自PHP 5.4.0 + ReflectionClass::newInstanceWithoutConstructor()方法在反射API中可用。

答案 1 :(得分:0)

在php中,任何数组都可以强制转换为对象。我的假设是pdo创建一个关联数组然后jus转换它。我不知道他的演员是否被召集......

实际上,演员不是正确的词,在幕后发生转换。读这个。发生了什么事情:http://php.net/manual/en/language.types.object.php