ReflectionClass::markLazyObjectAsInitialized
イニシャライザまたはファクトリを呼び出さずレイジーオブジェクトを初期化済みとしてマークする
&reftitle.description;
public objectReflectionClass::markLazyObjectAsInitialized
objectobject
イニシャライザまたはファクトリを呼び出さずレイジーオブジェクトを
初期化済みとしてマークします。object がレイジーでないか、
すでに初期化されている場合、このメソッドは効果がありません。
このメソッド動作は、object のレイジー戦略に関わらず、
初期化シーケンス
においてゴーストオブジェクトに対して説明されたものとほぼ同じですが、
イニシャライザが呼び出されない点を除きます。
その後、オブジェクトは、ReflectionProperty::setRawValueWithoutLazyInitialization または
ReflectionProperty::skipLazyInitialization で
既に初期化されたプロパティの値を除いて、
ReflectionClass::newInstanceWithoutConstructor で作成された、
元々レイジーでなかったオブジェクトと区別がつかなくなります。
&reftitle.parameters;
object
初期化済みとしてマークするオブジェクト。
&reftitle.returnvalues;
object を返します。
&reftitle.examples;
未初期化のレイジーオブジェクトを初期化済みとしてマークする
newLazyGhost(function ($object) {
echo "Initializer called\n";
$object->prop1 = 'initialized';
});
$reflector->getProperty('prop1')
->setRawValueWithoutLazyInitialization($object, 'prop1 value');
var_dump($object);
$reflector->markLazyObjectAsInitialized($object);
var_dump($object);
?>
]]>
&example.outputs;
string(11) "prop1 value"
["prop2"]=>
uninitialized(string)
["prop3"]=>
uninitialized(string)
}
object(Example)#3 (2) {
["prop1"]=>
string(11) "prop1 value"
["prop2"]=>
uninitialized(string)
["prop3"]=>
string(13) "default value"
}
]]>
既に初期化されたオブジェクトを初期化済みとしてマークする
newLazyGhost(function ($object) {
echo "Initializer called\n";
$object->prop1 = 'initialized';
});
$reflector->getProperty('prop1')
->setRawValueWithoutLazyInitialization($object, 'prop1 value');
var_dump($object->prop3);
var_dump($object);
$reflector->markLazyObjectAsInitialized($object);
var_dump($object);
?>
]]>
&example.outputs;
string(11) "initialized"
["prop2"]=>
uninitialized(string)
["prop3"]=>
string(13) "default value"
}
object(Example)#3 (2) {
["prop1"]=>
string(11) "initialized"
["prop2"]=>
uninitialized(string)
["prop3"]=>
string(13) "default value"
}
]]>
&reftitle.seealso;
レイジーオブジェクト
ReflectionClass::newLazyGhost
ReflectionClass::initializeLazyObject
ReflectionClass::isUninitializedLazyObject