private function createInitializer(ClassMetadata $classMetadata)
    {
        $className = $classMetadata->getName();
        $documentManager = $this->documentManager;

        if ($classMetadata->getReflectionClass()->hasMethod('__wakeup')) {
            return function (Proxy $proxy) use ($className, $documentManager) {
                $proxy->__setInitializer(null);
                $proxy->__setCloner(null);

                if ($proxy->__isInitialized()) {
                    return;
                }

                $properties = $proxy->__getLazyProperties();

                foreach ($properties as $propertyName => $property) {
                    if (!isset($proxy->$propertyName)) {
                        $proxy->$propertyName = $properties[$propertyName];
                    }
                }

                $proxy->__setInitialized(true);
                $proxy->__wakeup();
                $documentManager->getRepository($className)->refreshDocumentForProxy($proxy);
            };
        }

        return function (Proxy $proxy) use ($className, $documentManager) {
            $proxy->__setInitializer(null);
            $proxy->__setCloner(null);

            if ($proxy->__isInitialized()) {
                return;
            }

            $properties = $proxy->__getLazyProperties();

            foreach ($properties as $propertyName => $property) {
                if (!isset($proxy->$propertyName)) {
                    $proxy->$propertyName = $properties[$propertyName];
                }
            }

            $proxy->__setInitialized(true);
            $documentManager->getRepository($className)->refreshDocumentForProxy($proxy);
        };
    }
private function createInitializer(ClassMetadata $classMetadata)
    {
        $className = $classMetadata->getName();
        $documentManager = $this->documentManager;

        if ($classMetadata->getReflectionClass()->hasMethod('__wakeup')) {
            return function (Proxy $proxy) use ($className, $documentManager) {
                $proxy->__setInitializer(null);
                $proxy->__setCloner(null);

                if ($proxy->__isInitialized()) {
                    return;
                }

                $properties = $proxy->__getLazyProperties();

                foreach ($properties as $propertyName => $property) {
                    if (!isset($proxy->$propertyName)) {
                        $proxy->$propertyName = $properties[$propertyName];
                    }
                }

                $proxy->__setInitialized(true);
                $proxy->__wakeup();
                $documentManager->getRepository($className)->refreshDocumentForProxy($proxy);
            };
        }

        return function (Proxy $proxy) use ($className, $documentManager) {
            $proxy->__setInitializer(null);
            $proxy->__setCloner(null);

            if ($proxy->__isInitialized()) {
                return;
            }

            $properties = $proxy->__getLazyProperties();

            foreach ($properties as $propertyName => $property) {
                if (!isset($proxy->$propertyName)) {
                    $proxy->$propertyName = $properties[$propertyName];
                }
            }

            $proxy->__setInitialized(true);
            $documentManager->getRepository($className)->refreshDocumentForProxy($proxy);
        };
    }
private function createInitializer ( ClassMetadata $ classMetadata ) { $ className = $ classMetadata -> getName ( ) ; $ documentManager = $ this -> documentManager ; if ( $ classMetadata -> getReflectionClass ( ) -> hasMethod ( '__wakeup' ) ) { return function ( Proxy $ proxy ) use ( $ className , $ documentManager ) { $ proxy -> __setInitializer ( null ) ; $ proxy -> __setCloner ( null ) ; if ( $ proxy -> __isInitialized ( ) ) { return ; } $ properties = $ proxy -> __getLazyProperties ( ) ; foreach ( $ properties as $ propertyName => $ property ) { if ( ! isset ( $ proxy -> $ propertyName ) ) { $ proxy -> $ propertyName = $ properties [ $ propertyName ] ; } } $ proxy -> __setInitialized ( true ) ; $ proxy -> __wakeup ( ) ; $ documentManager -> getRepository ( $ className ) -> refreshDocumentForProxy ( $ proxy ) ; } ; } return function ( Proxy $ proxy ) use ( $ className , $ documentManager ) { $ proxy -> __setInitializer ( null ) ; $ proxy -> __setCloner ( null ) ; if ( $ proxy -> __isInitialized ( ) ) { return ; } $ properties = $ proxy -> __getLazyProperties ( ) ; foreach ( $ properties as $ propertyName => $ property ) { if ( ! isset ( $ proxy -> $ propertyName ) ) { $ proxy -> $ propertyName = $ properties [ $ propertyName ] ; } } $ proxy -> __setInitialized ( true ) ; $ documentManager -> getRepository ( $ className ) -> refreshDocumentForProxy ( $ proxy ) ; } ; }
Generates a closure capable of initializing a proxy.

@param PhpcrClassMetadata $classMetadata

@return \Closure
Generates a closure capable of initializing a proxy .