[ Index ]

PHP Cross Reference of phpBB-3.3.7-deutsch

title

Body

[close]

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

   1  <?php
   2  /*
   3   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   4   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   5   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   6   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   7   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   8   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   9   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  10   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  11   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  12   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  13   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  14   *
  15   * This software consists of voluntary contributions made by many individuals
  16   * and is licensed under the MIT license.
  17   */
  18  
  19  declare(strict_types=1);
  20  
  21  namespace ProxyManager\ProxyGenerator\AccessInterceptorValueHolder\MethodGenerator;
  22  
  23  use ProxyManager\Generator\MethodGenerator;
  24  use ProxyManager\ProxyGenerator\Util\Properties;
  25  use ProxyManager\ProxyGenerator\Util\UnsetPropertiesGenerator;
  26  use ReflectionClass;
  27  use Zend\Code\Generator\ParameterGenerator;
  28  use Zend\Code\Generator\PropertyGenerator;
  29  
  30  /**
  31   * The `staticProxyConstructor` implementation for access interceptor value holders
  32   *
  33   * @author Marco Pivetta <ocramius@gmail.com>
  34   * @license MIT
  35   */
  36  class StaticProxyConstructor extends MethodGenerator
  37  {
  38      /**
  39       * Constructor
  40       *
  41       * @param ReflectionClass   $originalClass
  42       * @param PropertyGenerator $valueHolder
  43       * @param PropertyGenerator $prefixInterceptors
  44       * @param PropertyGenerator $suffixInterceptors
  45       *
  46       * @throws \Zend\Code\Generator\Exception\InvalidArgumentException
  47       */
  48      public function __construct(
  49          ReflectionClass $originalClass,
  50          PropertyGenerator $valueHolder,
  51          PropertyGenerator $prefixInterceptors,
  52          PropertyGenerator $suffixInterceptors
  53      ) {
  54          parent::__construct('staticProxyConstructor', [], static::FLAG_PUBLIC | static::FLAG_STATIC);
  55  
  56          $prefix = new ParameterGenerator('prefixInterceptors');
  57          $suffix = new ParameterGenerator('suffixInterceptors');
  58  
  59          $prefix->setDefaultValue([]);
  60          $suffix->setDefaultValue([]);
  61          $prefix->setType('array');
  62          $suffix->setType('array');
  63  
  64          $this->setParameter(new ParameterGenerator('wrappedObject'));
  65          $this->setParameter($prefix);
  66          $this->setParameter($suffix);
  67          $this->setReturnType($originalClass->getName());
  68  
  69          $this->setDocBlock(
  70              "Constructor to setup interceptors\n\n"
  71              . "@param \\" . $originalClass->getName() . " \$wrappedObject\n"
  72              . "@param \\Closure[] \$prefixInterceptors method interceptors to be used before method logic\n"
  73              . "@param \\Closure[] \$suffixInterceptors method interceptors to be used before method logic\n\n"
  74              . '@return self'
  75          );
  76  
  77          $this->setBody(
  78              'static $reflection;' . "\n\n"
  79              . '$reflection = $reflection ?: $reflection = new \ReflectionClass(__CLASS__);' . "\n"
  80              . '$instance = (new \ReflectionClass(get_class()))->newInstanceWithoutConstructor();' . "\n\n"
  81              . UnsetPropertiesGenerator::generateSnippet(Properties::fromReflectionClass($originalClass), 'instance')
  82              . '$instance->' . $valueHolder->getName() . " = \$wrappedObject;\n"
  83              . '$instance->' . $prefixInterceptors->getName() . " = \$prefixInterceptors;\n"
  84              . '$instance->' . $suffixInterceptors->getName() . " = \$suffixInterceptors;\n\n"
  85              . 'return $instance;'
  86          );
  87      }
  88  }


Generated: Thu Mar 24 21:31:15 2022 Cross-referenced by PHPXref 0.7.1