isInterface()) { $interfaces[] = $originalClass->getName(); } else { $classGenerator->setExtendedClass($originalClass->getName()); } $classGenerator->setImplementedInterfaces($interfaces); $classGenerator->addPropertyFromGenerator($valueHolder = new ValueHolderProperty($originalClass)); $classGenerator->addPropertyFromGenerator($prefixInterceptors = new MethodPrefixInterceptors()); $classGenerator->addPropertyFromGenerator($suffixInterceptors = new MethodSuffixInterceptors()); $classGenerator->addPropertyFromGenerator($publicProperties); array_map( static function (MethodGenerator $generatedMethod) use ($originalClass, $classGenerator): void { ClassGeneratorUtils::addMethodIfNotFinal($originalClass, $classGenerator, $generatedMethod); }, array_merge( array_map( $this->buildMethodInterceptor($prefixInterceptors, $suffixInterceptors, $valueHolder), ProxiedMethodsFilter::getProxiedMethods($originalClass) ), [ Constructor::generateMethod($originalClass, $valueHolder), new StaticProxyConstructor($originalClass, $valueHolder, $prefixInterceptors, $suffixInterceptors), new GetWrappedValueHolderValue($valueHolder), new SetMethodPrefixInterceptor($prefixInterceptors), new SetMethodSuffixInterceptor($suffixInterceptors), new MagicGet( $originalClass, $valueHolder, $prefixInterceptors, $suffixInterceptors, $publicProperties ), new MagicSet( $originalClass, $valueHolder, $prefixInterceptors, $suffixInterceptors, $publicProperties ), new MagicIsset( $originalClass, $valueHolder, $prefixInterceptors, $suffixInterceptors, $publicProperties ), new MagicUnset( $originalClass, $valueHolder, $prefixInterceptors, $suffixInterceptors, $publicProperties ), new MagicClone($originalClass, $valueHolder, $prefixInterceptors, $suffixInterceptors), new MagicSleep($originalClass, $valueHolder), new MagicWakeup($originalClass), ] ) ); } private function buildMethodInterceptor( MethodPrefixInterceptors $prefixes, MethodSuffixInterceptors $suffixes, ValueHolderProperty $valueHolder, ): callable { return static function (ReflectionMethod $method) use ($prefixes, $suffixes, $valueHolder): InterceptedMethod { return InterceptedMethod::generateMethod( new MethodReflection($method->getDeclaringClass()->getName(), $method->getName()), $valueHolder, $prefixes, $suffixes ); }; } } __halt_compiler();----SIGNATURE:----Pr/8plL4KbTIpytmaqLYbs7/fWsKeJjEMmIOrhE3QfFrs2h7nAqvXPl164FqMaIUHQ544SeCdYdMEZszAjOoQ+WvaTpkpeZStMh13H0ccwiwLg/GIb1x/YfJvBTGuZ/zGjnHBcx9cdp/Ac/4gYpCzB0tdPSsCjIX95UJ3aIBabratRclmFqEZlm336atL8f9cpnQ9P7xu0Rp2hyrEGbmkI6YMYyuXZTf9koKQ0ysUZhhsmFj+BBrCrwjUohv2bpXAZDo1VR6Nq04gQWHMXHqKcJk4InZf9Jm4FncC3ZTdTfqZDdsV6JhiuzLWlgPCaeVuPgGaLYJL5gM6khCquce2iBPKFUr06LB0w/DqwFTIVS0RIMOCilxiFz76opRmfP5YAIkUNCToWc0dWbXVMUP1/pl7DqlaaqUV4irr7qMj/XSsJ7eISFfyrgiVzCRIxTGss48nJ0nuXHW2NfsPmG5q1v0Zdlk9EyKGz+8SN6gAgzLBm4Qa9uo62X2+smrrpWWOCkKNfQpbeNRjtUscEFizSnqA4HJuqpTa3LX7z/pSf4qjQO+lSiYPdhb4Z4b3QIqOoGg4xWUsFzoqBlKPkyCpEKr44+MZoPbHcv08xfHuhX7PmAhCmfLajtFduNl+hTPyvXuJkjdru/Yp5UfJ2NYL4wT9JUDZP3AvKcgWili1Xg=----ATTACHMENT:----NzM1OTIxMTc3MzUzNzU5NyA5NzIxMTQxNzcxNjE3NDQxIDQ2NTg4MzA1MDE0MDYzMTg=