[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 declare(strict_types=1); 4 5 namespace ProxyManager\ProxyGenerator\LazyLoadingValueHolder\MethodGenerator; 6 7 use ProxyManager\Generator\MagicMethodGenerator; 8 use Zend\Code\Generator\ParameterGenerator; 9 use ProxyManager\ProxyGenerator\PropertyGenerator\PublicPropertiesMap; 10 use ProxyManager\ProxyGenerator\Util\PublicScopeSimulator; 11 use ReflectionClass; 12 use Zend\Code\Generator\PropertyGenerator; 13 14 /** 15 * Magic `__isset` method for lazy loading value holder objects 16 * 17 * @author Marco Pivetta <ocramius@gmail.com> 18 * @license MIT 19 */ 20 class MagicIsset extends MagicMethodGenerator 21 { 22 /** 23 * Constructor 24 * 25 * @param ReflectionClass $originalClass 26 * @param PropertyGenerator $initializerProperty 27 * @param PropertyGenerator $valueHolderProperty 28 * @param PublicPropertiesMap $publicProperties 29 * 30 * @throws \Zend\Code\Generator\Exception\InvalidArgumentException 31 * @throws \InvalidArgumentException 32 */ 33 public function __construct( 34 ReflectionClass $originalClass, 35 PropertyGenerator $initializerProperty, 36 PropertyGenerator $valueHolderProperty, 37 PublicPropertiesMap $publicProperties 38 ) { 39 parent::__construct($originalClass, '__isset', [new ParameterGenerator('name')]); 40 41 $initializer = $initializerProperty->getName(); 42 $valueHolder = $valueHolderProperty->getName(); 43 $callParent = ''; 44 45 if (! $publicProperties->isEmpty()) { 46 $callParent = 'if (isset(self::$' . $publicProperties->getName() . "[\$name])) {\n" 47 . ' return isset($this->' . $valueHolder . '->$name);' 48 . "\n}\n\n"; 49 } 50 51 $callParent .= PublicScopeSimulator::getPublicAccessSimulationCode( 52 PublicScopeSimulator::OPERATION_ISSET, 53 'name', 54 null, 55 $valueHolderProperty 56 ); 57 58 $this->setBody( 59 '$this->' . $initializer . ' && $this->' . $initializer 60 . '->__invoke($this->' . $valueHolder . ', $this, \'__isset\', array(\'name\' => $name), $this->' 61 . $initializer . ');' . "\n\n" . $callParent 62 ); 63 } 64 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |