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