{{$prefixInterceptorsName}}[{{$name}}])) { $returnEarly = false; $prefixReturnValue = $this->{{$prefixInterceptorsName}}[{{$name}}]->__invoke($this, $this->{{$valueHolderName}}, {{$name}}, {{$paramsString}}, $returnEarly); if ($returnEarly) { {{$returnEarlyPrefixExpression}} } } {{$methodBody}} if (isset($this->{{$suffixInterceptorsName}}[{{$name}}])) { $returnEarly = false; $suffixReturnValue = $this->{{$suffixInterceptorsName}}[{{$name}}]->__invoke($this, $this->{{$valueHolderName}}, {{$name}}, {{$paramsString}}, $returnValue, $returnEarly); if ($returnEarly) { {{$returnEarlySuffixExpression}} } } {{$returnExpression}} PHP; /** * @param string $methodBody the body of the previously generated code. * It MUST assign the return value to a variable * `$returnValue` instead of directly returning */ public static function createInterceptedMethodBody( string $methodBody, MethodGenerator $method, PropertyGenerator $valueHolder, PropertyGenerator $prefixInterceptors, PropertyGenerator $suffixInterceptors, ?ReflectionMethod $originalMethod ): string { $name = var_export($method->getName(), true); $valueHolderName = $valueHolder->getName(); $prefixInterceptorsName = $prefixInterceptors->getName(); $suffixInterceptorsName = $suffixInterceptors->getName(); $params = []; foreach ($method->getParameters() as $parameter) { $parameterName = $parameter->getName(); $symbol = $parameter->getPassedByReference() ? '&$' : '$'; $params[] = var_export($parameterName, true) . ' => ' . $symbol . $parameterName; } $paramsString = 'array(' . implode(', ', $params) . ')'; $replacements = [ '{{$prefixInterceptorsName}}' => $prefixInterceptorsName, '{{$name}}' => $name, '{{$valueHolderName}}' => $valueHolderName, '{{$paramsString}}' => $paramsString, '{{$returnEarlyPrefixExpression}}' => ProxiedMethodReturnExpression::generate('$prefixReturnValue', $originalMethod), '{{$methodBody}}' => $methodBody, '{{$suffixInterceptorsName}}' => $suffixInterceptorsName, '{{$returnEarlySuffixExpression}}' => ProxiedMethodReturnExpression::generate('$suffixReturnValue', $originalMethod), '{{$returnExpression}}' => ProxiedMethodReturnExpression::generate('$returnValue', $originalMethod), ]; return str_replace(array_keys($replacements), $replacements, self::TEMPLATE); } } __halt_compiler();----SIGNATURE:----Dqz+cssOvsMGM38FgTt40vlpaS1D/FchQKjZM9HCBPNgL3qMAxU/UBEgkWMdr7QIJNrATNTZnBHrEJQ3SoIH0KQfGNyhTf/M61QJZyqfOslCIrzGSbcG9nx9yMFZ4WQJ6kIEdZDEfwlY9Cfp7j75OKCwBWaeYTkDId49uPqRLI7o9PTfy9sCTCSwbkk0I6Qp5ymA7Kjz5orqZXm/3ktod8iSfQ7Fr8JBaEazlNsdB5oNJY3nOv8A8VgEvZFWiMLAcOGm/cRTV85fXh5T2hViT9LkPyhTGD6g99LOiKfvlXmHd4p6jfvt6I5TdRkXHSBq1Q2bCNVNyK4oBvK3yTQIY4hr4xPUW11TVXwHsfvGrVF/lKVjzSsKxPbNxp8RR7z7JiyXvNt2wXCdfsC1Pnftj+OmLsmImrRJKQEy8/hlYJq5ACHSrl11yE5chzP2w4aOSQBpOz7MzFUizVwjNdcNPQqS4LGb36vYWeuBzXgZZJABxVYUKoLmlJDcZrJtaoxdC7+v3qJwnnvRFM2tiXZV3zE45714ujwQqoBJwP4Y4niGtb79Kq4IZ6EiBrMfEn7lGPLrulsW2lXe0oQCVRr5B5TquLXQum0DXMUTLoAOJAlnzkhhIs4sbNH7WlcHKLNRQPk+m2ZvDRzJPcnK8zOVq9Td++LQNck5X9s09hTQS9o=----ATTACHMENT:----ODk2NDg2Nzk4Nzk3OTc4MyA5OTc2MTQ5NDQ1MDcxODI5IDQ0NTcxNzc4NTA0NjEzNjI=