{{$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:----RkVCNAzpF0OUYxVs2Rg7I8RLJHOCMwCYi6jofxqLtL/Cfb+AGdxtuJaVQpN3zUOvS64gYag5qyfKWK0Hb1VlQyXQS1HAAti+lKgg8uxqmHf8se3aI7VMHi3wg8qMgm+UKuoah/uTsZYUA3FQTmTQz9Zvs9hTJnu1FES5jQs44Rq0ew6oyl7R86A1aue0PS+vv0cKec0qeJwXuh3psIFzopnqSIJ2tFXhHSOVnAwKDfYnYb/Hn+pEtuuq0sOLz3s33NCNc93yhHqILn0MlDlVieNeFTsjbK91anpgYJoubiCq2glaqtXF7eRd4jN6fwXlgczDBLmvzWzG/ubLYnQebyePPcQKp0UQPL+/s0HXLIa0gZb9L95jEo/nn6qiu+q72kX7VY8U5gpW3QrMppJYW9fAyD2FdiDUs8r8ChFKX+ZUFpjVLhzRuIaBy7GzpqJvjJUTt3FR6+B9jbG9QqSCmOHdI7I6blSigey4smedWqYy6PSI1sOo4VcQhh5G5U8xRI3VcsxdF+ktLv30+So/jiEBtYCfZASL80OU8JAznQ4O/17x0cRwLxu34zI8Eb+UwHWCcSpCkqx54Xj9321xfjMOugmPjAHaQNfKGI+Nw2oFh5ZiHyxgLdVzXU1C37Y9PE4J71QXah1b19JqOI+IfXxX+Y0HBIGJawcAfmeBjZ8=----ATTACHMENT:----ODkzNjAwNTgxMDcxMjM0NCA0NDM4ODgxOTE1NDE4NDA0IDkzMDM1Mjc4Njg4NTYz