Verzeichnisstruktur phpBB-3.3.15
- Veröffentlicht
- 28.08.2024
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
LazyLoadingMethodInterceptor.php
01 <?php
02
03 declare(strict_types=1);
04
05 namespace ProxyManager\ProxyGenerator\LazyLoadingValueHolder\MethodGenerator;
06
07 use ProxyManager\Generator\MethodGenerator;
08 use ProxyManager\Generator\Util\ProxiedMethodReturnExpression;
09 use Zend\Code\Generator\PropertyGenerator;
10 use Zend\Code\Reflection\MethodReflection;
11
12 /**
13 * Method decorator for lazy loading value holder objects
14 *
15 * @author Marco Pivetta <ocramius@gmail.com>
16 * @license MIT
17 */
18 class LazyLoadingMethodInterceptor extends MethodGenerator
19 {
20 /**
21 * @throws \Zend\Code\Generator\Exception\InvalidArgumentException
22 */
23 public static function generateMethod(
24 MethodReflection $originalMethod,
25 PropertyGenerator $initializerProperty,
26 PropertyGenerator $valueHolderProperty
27 ) : self {
28 /* @var $method self */
29 $method = static::fromReflectionWithoutBodyAndDocBlock($originalMethod);
30 $initializerName = $initializerProperty->getName();
31 $valueHolderName = $valueHolderProperty->getName();
32 $parameters = $originalMethod->getParameters();
33 $methodName = $originalMethod->getName();
34 $initializerParams = [];
35 $forwardedParams = [];
36
37 foreach ($parameters as $parameter) {
38 $parameterName = $parameter->getName();
39 $variadicPrefix = $parameter->isVariadic() ? '...' : '';
40 $initializerParams[] = var_export($parameterName, true) . ' => $' . $parameterName;
41 $forwardedParams[] = $variadicPrefix . '$' . $parameterName;
42 }
43
44 $method->setBody(
45 '$this->' . $initializerName
46 . ' && $this->' . $initializerName
47 . '->__invoke($this->' . $valueHolderName . ', $this, ' . var_export($methodName, true)
48 . ', array(' . implode(', ', $initializerParams) . '), $this->' . $initializerName . ");\n\n"
49 . ProxiedMethodReturnExpression::generate(
50 '$this->' . $valueHolderName . '->' . $methodName . '(' . implode(', ', $forwardedParams) . ')',
51 $originalMethod
52 )
53 );
54
55 return $method;
56 }
57 }
58