[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

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

   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace ProxyManager\ProxyGenerator\AccessInterceptorValueHolder\MethodGenerator;
   6  
   7  use ProxyManager\Generator\MagicMethodGenerator;
   8  use ReflectionClass;
   9  use Zend\Code\Generator\PropertyGenerator;
  10  
  11  /**
  12   * Magic `__clone` for lazy loading value holder objects
  13   *
  14   * @author Marco Pivetta <ocramius@gmail.com>
  15   * @license MIT
  16   */
  17  class MagicClone extends MagicMethodGenerator
  18  {
  19      /**
  20       * Constructor
  21       *
  22       * @param ReflectionClass   $originalClass
  23       * @param PropertyGenerator $valueHolderProperty
  24       * @param PropertyGenerator $prefixInterceptors
  25       * @param PropertyGenerator $suffixInterceptors
  26       */
  27      public function __construct(
  28          ReflectionClass $originalClass,
  29          PropertyGenerator $valueHolderProperty,
  30          PropertyGenerator $prefixInterceptors,
  31          PropertyGenerator $suffixInterceptors
  32      ) {
  33          parent::__construct($originalClass, '__clone');
  34  
  35          $valueHolder = $valueHolderProperty->getName();
  36          $prefix      = $prefixInterceptors->getName();
  37          $suffix      = $suffixInterceptors->getName();
  38  
  39          $this->setBody(
  40              "\$this->$valueHolder = clone \$this->$valueHolder;\n\n"
  41              . "foreach (\$this->$prefix as \$key => \$value) {\n"
  42              . "    \$this->$prefix" . "[\$key] = clone \$value;\n"
  43              . "}\n\n"
  44              . "foreach (\$this->$suffix as \$key => \$value) {\n"
  45              . "    \$this->$suffix" . "[\$key] = clone \$value;\n"
  46              . '}'
  47          );
  48      }
  49  }


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