[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/vendor/ocramius/proxy-manager/src/ProxyManager/ProxyGenerator/LazyLoading/MethodGenerator/ -> StaticProxyConstructor.php (source)

   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace ProxyManager\ProxyGenerator\LazyLoading\MethodGenerator;
   6  
   7  use ProxyManager\Generator\MethodGenerator;
   8  use ProxyManager\ProxyGenerator\Util\Properties;
   9  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  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1