{{$prefixInterceptorsName}}[{{$name}}])) { $returnEarly = false; $prefixReturnValue = $this->{{$prefixInterceptorsName}}[{{$name}}]->__invoke($this, $this, {{$name}}, {{$paramsString}}, $returnEarly); if ($returnEarly) { {{$prefixEarlyReturnExpression}} } } {{$methodBody}} if (isset($this->{{$suffixInterceptorsName}}[{{$name}}])) { $returnEarly = false; $suffixReturnValue = $this->{{$suffixInterceptorsName}}[{{$name}}]->__invoke($this, $this, {{$name}}, {{$paramsString}}, $returnValue, $returnEarly); if ($returnEarly) { {{$suffixEarlyReturnExpression}} } } {{$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 $prefixInterceptors, PropertyGenerator $suffixInterceptors, ?ReflectionMethod $originalMethod ): string { $replacements = [ '{{$name}}' => var_export($method->getName(), true), '{{$prefixInterceptorsName}}' => $prefixInterceptors->getName(), '{{$prefixEarlyReturnExpression}}' => ProxiedMethodReturnExpression::generate('$prefixReturnValue', $originalMethod), '{{$methodBody}}' => $methodBody, '{{$suffixInterceptorsName}}' => $suffixInterceptors->getName(), '{{$suffixEarlyReturnExpression}}' => ProxiedMethodReturnExpression::generate('$suffixReturnValue', $originalMethod), '{{$returnExpression}}' => ProxiedMethodReturnExpression::generate('$returnValue', $originalMethod), '{{$paramsString}}' => 'array(' . implode(', ', array_map( static function (ParameterGenerator $parameter): string { return var_export($parameter->getName(), true) . ' => ' . ($parameter->getPassedByReference() ? '&$' : '$') . $parameter->getName(); }, $method->getParameters() )) . ')', ]; return str_replace( array_keys($replacements), $replacements, self::TEMPLATE ); } } __halt_compiler();----SIGNATURE:----l32DnK5V7ECq0U4TwaUSZ5oNeJj7AouFspo/UipvZgSS4xs3Vibob7XFDGs7hRD6URAd0M9DL02CFYNWOtQ/yBGynvbI6/F1SK7G49YZr6eYrbHYFiWmHIUahG3SWxnQHylqEW3icxcpshdNXeZXNGRU4LiupJVRgua3sS4jKnvlZCchD7BbLzl4kt0vJ4P9hHJnnR+HUbUiFkF9PE6WB8BBNdhDyXgMnn6CMr1ZYotwI3Z5fw9pnn+yfgDUpqPGb+I6p5qt7kWpb2qZ6okUxcJ3KnxUHsuOpGLh9/M1rgVgiIlZNrrq6jHpUzuyMOEpWr2PTrzU1PZ5oxse/SX1y7k3fgFBIyYJIP2bUZSXCGYpAXXPj1NLt+3ssoS7DbGDCD7kP1BHw2MQjKJYR/t/D+eo9grqoZYK1bUHtn9UDgVbqEmFir1rwqFmME6PHZzGx7Vln+bWZcOnG7LKiGy61+jyyzt2U/X8Od2NSD+5pM/u2Pyku+OijcOibr8fwItaMmYgnZkJaYynXS0gPwVAGAgd2hYO40q+Pbk4aJVXdTlb4VNeF1kiBAfpiaAMZNeAUbV4S34coVWqtoyNrk2J+3sKAoUlG/wt5sCY7MhTm975sqjtv5Ah/ESKfRjGdaAvn4mcsUesJ1quFC1slFH8g+EnkLlMI7qOc5y8Qpbln5E=----ATTACHMENT:----MTE3MjM1MTA5Mzg4MTQ5MiAxNDA3MjMxMzU0MTg5OTUwIDg5MDE1NjU0NTc2MjYyNjY=