{{$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:----P0Qeb8QB/lWgRLXe//J2k2seftR87ROzi/DdF3eK0xSWky3bgkB58jgew+N7YJ8r80kcrSfdhjZK3DoiB7U33NZrA09qacLB9W83m3AuYF9EqePhU11HHIl9IjHQyqb3Z0cZaTMJbEE9kpZILo389ByutqeFUVDXtJxN/IGinWRxq74pwY17mVZ/I1sEn5V1fdyPv5HRMLN8jvy8DNe3CJHv9QF9dVqDQEOwmJFGPMw05vp2Ra5kA/w2hFhBCawUUlU09eWMsV7rqQmwOOXd+pWSIde6n1CzlWBxslgeDaQ1ITDdIAsddTc7raRF3XfZRbWJi8Wg54F+OtZn7v5R4qiF+uuJa/MjkNYHiOBa2mRFZGj6obnSzKxIcY42ZTXhEf8mG8mXkNKQ5enTQzYVnT4IX4nViTXDq2inXNAzl17dKry7XKAJeiBitcO2X/9MoktXK3zESJEGrBTE69Qw6vnZtGyBW3Ai83MW8EQJ77cjRM4N0EApZX+L4+IwVz4PgRNMu+TCq216QoNO0QPSTdJ0DuUbuWqctYBeIEPrNAimYNRz4YpQViu1ahm2TqyXOu5ixJNLEa86SuIw+6FGhZWPeUHDvnJWnR8Pd7mApHxv9JzvMk7WrGzt20p5DB4lfhiMs91a67O1agPlXWr+eY8jXoNsJVulczscPiwsJpI=----ATTACHMENT:----MjE0ODM5MzgyMDE5NjYzMCA5MDU5Nzg2ODgxNzQ1MzczIDgxMTMxMDc1NTgwNTI2MDk=