[ Index ]

PHP Cross Reference of phpBB-3.3.11-deutsch

title

Body

[close]

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

   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator;
   6  
   7  use ProxyManager\Generator\MagicMethodGenerator;
   8  use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\Util\InterceptorGenerator;
   9  use ProxyManager\ProxyGenerator\Util\GetMethodIfExists;
  10  use ReflectionClass;
  11  use Zend\Code\Generator\PropertyGenerator;
  12  
  13  /**
  14   * Magic `__clone` for lazy loading ghost objects
  15   *
  16   * @author Marco Pivetta <ocramius@gmail.com>
  17   * @license MIT
  18   */
  19  class MagicClone extends MagicMethodGenerator
  20  {
  21      /**
  22       * Constructor
  23       *
  24       * @param ReflectionClass   $originalClass
  25       * @param PropertyGenerator $prefixInterceptors
  26       * @param PropertyGenerator $suffixInterceptors
  27       */
  28      public function __construct(
  29          ReflectionClass $originalClass,
  30          PropertyGenerator $prefixInterceptors,
  31          PropertyGenerator $suffixInterceptors
  32      ) {
  33          parent::__construct($originalClass, '__clone');
  34  
  35          $parent = GetMethodIfExists::get($originalClass, '__clone');
  36  
  37          $this->setBody(InterceptorGenerator::createInterceptedMethodBody(
  38              $parent ? '$returnValue = parent::__clone();' : '$returnValue = null;',
  39              $this,
  40              $prefixInterceptors,
  41              $suffixInterceptors,
  42              $parent
  43          ));
  44      }
  45  }


Generated: Sat Nov 4 14:26:03 2023 Cross-referenced by PHPXref 0.7.1