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