bitExpert\Disco\Proxy\LazyBean\LazyBeanGenerator::generate PHP Method

generate() public method

{@inheritDoc}
public generate ( ReflectionClass $originalClass, ClassGenerator $classGenerator )
$originalClass ReflectionClass
$classGenerator Zend\Code\Generator\ClassGenerator
    public function generate(ReflectionClass $originalClass, ClassGenerator $classGenerator)
    {
        CanProxyAssertion::assertClassCanBeProxied($originalClass);
        $interfaces = array(VirtualProxyInterface::class);
        $publicProperties = new PublicPropertiesMap(Properties::fromReflectionClass($originalClass));
        if ($originalClass->isInterface()) {
            $interfaces[] = $originalClass->getName();
        } else {
            $classGenerator->setExtendedClass($originalClass->getName());
        }
        $classGenerator->setImplementedInterfaces($interfaces);
        $classGenerator->addPropertyFromGenerator($valueHolder = new ValueHolderProperty());
        $classGenerator->addPropertyFromGenerator($valueHolderBeanId = new ValueHolderBeanIdProperty());
        $classGenerator->addPropertyFromGenerator($initializer = new InitializerProperty());
        $classGenerator->addPropertyFromGenerator($publicProperties);
        array_map(function (MethodGenerator $generatedMethod) use($originalClass, $classGenerator) {
            ClassGeneratorUtils::addMethodIfNotFinal($originalClass, $classGenerator, $generatedMethod);
        }, array_merge(array_map(function (ReflectionMethod $method) use($initializer, $valueHolder) {
            return LazyLoadingMethodInterceptor::generateMethod(new MethodReflection($method->class, $method->getName()), $initializer, $valueHolder);
        }, ProxiedMethodsFilter::getProxiedMethods($originalClass)), array(new Constructor($originalClass, $initializer, $valueHolderBeanId), new MagicGet($originalClass, $initializer, $valueHolder, $publicProperties), new MagicSet($originalClass, $initializer, $valueHolder, $publicProperties), new MagicIsset($originalClass, $initializer, $valueHolder, $publicProperties), new MagicUnset($originalClass, $initializer, $valueHolder, $publicProperties), new MagicClone($originalClass, $initializer, $valueHolder), new MagicSleep($originalClass, $initializer, $valueHolder, $valueHolderBeanId), new MagicWakeup($originalClass, $valueHolder, $valueHolderBeanId), new SetProxyInitializer($initializer), new GetProxyInitializer($initializer), new InitializeProxy($initializer, $valueHolder), new IsProxyInitialized($valueHolder), new GetWrappedValueHolderValue($valueHolder))));
    }
LazyBeanGenerator