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 |
StaticProxyConstructor.php
01 <?php
02
03 declare(strict_types=1);
04
05 namespace ProxyManager\ProxyGenerator\LazyLoading\MethodGenerator;
06
07 use ProxyManager\Generator\MethodGenerator;
08 use ProxyManager\ProxyGenerator\Util\Properties;
09 use ProxyManager\ProxyGenerator\Util\UnsetPropertiesGenerator;
10 use Zend\Code\Generator\ParameterGenerator;
11 use Zend\Code\Generator\PropertyGenerator;
12
13 /**
14 * The `staticProxyConstructor` implementation for lazy loading proxies
15 *
16 * @author Marco Pivetta <ocramius@gmail.com>
17 * @license MIT
18 */
19 class StaticProxyConstructor extends MethodGenerator
20 {
21 /**
22 * Static constructor
23 *
24 * @param PropertyGenerator $initializerProperty
25 * @param Properties $properties
26 *
27 * @throws \Zend\Code\Generator\Exception\InvalidArgumentException
28 */
29 public function __construct(PropertyGenerator $initializerProperty, Properties $properties)
30 {
31 parent::__construct('staticProxyConstructor', [], static::FLAG_PUBLIC | static::FLAG_STATIC);
32
33 $this->setParameter(new ParameterGenerator('initializer'));
34
35 $this->setDocBlock("Constructor for lazy initialization\n\n@param \\Closure|null \$initializer");
36 $this->setBody(
37 'static $reflection;' . "\n\n"
38 . '$reflection = $reflection ?? $reflection = new \ReflectionClass(__CLASS__);' . "\n"
39 . '$instance = $reflection->newInstanceWithoutConstructor();' . "\n\n"
40 . UnsetPropertiesGenerator::generateSnippet($properties, 'instance')
41 . '$instance->' . $initializerProperty->getName() . ' = $initializer;' . "\n\n"
42 . 'return $instance;'
43 );
44 }
45 }
46