{{$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:----lEJvgUgPcz7vQe0glekiLqEpVRhxlj829GP2UaebSEp0xzS5LrBHRYGM56U+KSU8/TMmO5Ys21rlPP3m3e5zGXvtOeNvQSkl3VathWyTXSPgpso3RsuiJb8dqqK4hiMqlCR9kTNx7ZZ9Luj6vYAklWiSIBhqO1OOijRAMWx49O6TlXJJ6j5m9seuKO0M4b+kHEzIAuZeX1Eq4l+M7ofG5SJc/6VPfOdsdf+/egxzlOKirPVrJ5SB+PRwOkYLD36c4RYpFg7KB6LyGZhfLLv3ZRHPAs9oUuuEjhdGeDZCQNbLEC/Vx0wcz6cPmGRdYazZN2rPGE2hn+RyZDSWNy23kZNQdtK4t1mPU6lwFOaUsVtYWqkhjXMFLJdkI1oYNows4yDuOkemUWrZX2Oy2sM7+IhLpa8JeS9wjX+qIDMbfSruekAKHF8PJNNPH+OXVg1BgKa311Vub7jRTKvclRVkasheIEm6+WSV/6nSNslr3kuGnTrdGton9aPgLl4C61nD7H0LQhdouWLkAr6eCPh3mGx3aZwAjbQti3n8J1a+0OR2mJ8Z+xFOqRqGftLtRUHEEOglh7FNgIeDa/caqhc6IAdQv5m792nBOnz310jLPT1Y8Jjr7InEC32pvTwHziEevRqvDfhuaD/qWL2GOn7FNYoF2e89F3dSOmtS8DQCw0c=----ATTACHMENT:----NzY1OTIzOTU2NTk2NTY1MyA0ODA4MDc1NjA5NTczNzQ0IDI2NzgxMjk4NDU5MzkwMDQ=