[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

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

   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace ProxyManager\ProxyGenerator\LazyLoadingValueHolder\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 $initializerProperty
  24       * @param PropertyGenerator $valueHolderProperty
  25       */
  26      public function __construct(
  27          ReflectionClass $originalClass,
  28          PropertyGenerator $initializerProperty,
  29          PropertyGenerator $valueHolderProperty
  30      ) {
  31          parent::__construct($originalClass, '__clone');
  32  
  33          $initializer = $initializerProperty->getName();
  34          $valueHolder = $valueHolderProperty->getName();
  35  
  36          $this->setBody(
  37              '$this->' . $initializer . ' && $this->' . $initializer
  38              . '->__invoke($this->' . $valueHolder
  39              . ', $this, \'__clone\', array(), $this->' . $initializer . ');' . "\n\n"
  40              . '$this->' . $valueHolder . ' = clone $this->' . $valueHolder . ';'
  41          );
  42      }
  43  }


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