[ Index ]

PHP Cross Reference of phpBB-3.3.11-deutsch

title

Body

[close]

/vendor/ocramius/proxy-manager/src/ProxyManager/ProxyGenerator/AccessInterceptorScopeLocalizer/MethodGenerator/ -> MagicGet.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\Util\GetMethodIfExists;
   9  use Zend\Code\Generator\ParameterGenerator;
  10  use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\Util\InterceptorGenerator;
  11  use ProxyManager\ProxyGenerator\Util\PublicScopeSimulator;
  12  use ReflectionClass;
  13  use Zend\Code\Generator\PropertyGenerator;
  14  
  15  /**
  16   * Magic `__get` for lazy loading ghost objects
  17   *
  18   * @author Marco Pivetta <ocramius@gmail.com>
  19   * @license MIT
  20   */
  21  class MagicGet extends MagicMethodGenerator
  22  {
  23      /**
  24       * @param ReflectionClass   $originalClass
  25       * @param PropertyGenerator $prefixInterceptors
  26       * @param PropertyGenerator $suffixInterceptors
  27       *
  28       * @throws \Zend\Code\Generator\Exception\InvalidArgumentException
  29       * @throws \InvalidArgumentException
  30       */
  31      public function __construct(
  32          ReflectionClass $originalClass,
  33          PropertyGenerator $prefixInterceptors,
  34          PropertyGenerator $suffixInterceptors
  35      ) {
  36          parent::__construct($originalClass, '__get', [new ParameterGenerator('name')]);
  37  
  38          $parent = GetMethodIfExists::get($originalClass, '__get');
  39  
  40          $callParent = '$returnValue = & parent::__get($name);';
  41  
  42          if (! $parent) {
  43              $callParent = PublicScopeSimulator::getPublicAccessSimulationCode(
  44                  PublicScopeSimulator::OPERATION_GET,
  45                  'name',
  46                  null,
  47                  null,
  48                  'returnValue'
  49              );
  50          }
  51  
  52          $this->setBody(InterceptorGenerator::createInterceptedMethodBody(
  53              $callParent,
  54              $this,
  55              $prefixInterceptors,
  56              $suffixInterceptors,
  57              $parent
  58          ));
  59      }
  60  }


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