[ 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\AccessInterceptorValueHolder\MethodGenerator; 6 7 use ProxyManager\Generator\MagicMethodGenerator; 8 use ProxyManager\ProxyGenerator\Util\GetMethodIfExists; 9 use Zend\Code\Generator\ParameterGenerator; 10 use ProxyManager\ProxyGenerator\AccessInterceptorValueHolder\MethodGenerator\Util\InterceptorGenerator; 11 use ProxyManager\ProxyGenerator\PropertyGenerator\PublicPropertiesMap; 12 use ProxyManager\ProxyGenerator\Util\PublicScopeSimulator; 13 use ReflectionClass; 14 use Zend\Code\Generator\PropertyGenerator; 15 16 /** 17 * Magic `__unset` for method interceptor value holder objects 18 * 19 * @author Marco Pivetta <ocramius@gmail.com> 20 * @license MIT 21 */ 22 class MagicUnset extends MagicMethodGenerator 23 { 24 /** 25 * Constructor 26 * @param ReflectionClass $originalClass 27 * @param PropertyGenerator $valueHolder 28 * @param PropertyGenerator $prefixInterceptors 29 * @param PropertyGenerator $suffixInterceptors 30 * @param PublicPropertiesMap $publicProperties 31 * 32 * @throws \Zend\Code\Generator\Exception\InvalidArgumentException 33 * @throws \InvalidArgumentException 34 */ 35 public function __construct( 36 ReflectionClass $originalClass, 37 PropertyGenerator $valueHolder, 38 PropertyGenerator $prefixInterceptors, 39 PropertyGenerator $suffixInterceptors, 40 PublicPropertiesMap $publicProperties 41 ) { 42 parent::__construct($originalClass, '__unset', [new ParameterGenerator('name')]); 43 44 $parent = GetMethodIfExists::get($originalClass, '__unset'); 45 $valueHolderName = $valueHolder->getName(); 46 47 $callParent = PublicScopeSimulator::getPublicAccessSimulationCode( 48 PublicScopeSimulator::OPERATION_UNSET, 49 'name', 50 'value', 51 $valueHolder, 52 'returnValue' 53 ); 54 55 if (! $publicProperties->isEmpty()) { 56 $callParent = 'if (isset(self::$' . $publicProperties->getName() . "[\$name])) {\n" 57 . ' unset($this->' . $valueHolderName . '->$name);' 58 . "\n} else {\n $callParent\n}\n\n"; 59 } 60 61 $callParent .= '$returnValue = false;'; 62 63 $this->setBody(InterceptorGenerator::createInterceptedMethodBody( 64 $callParent, 65 $this, 66 $valueHolder, 67 $prefixInterceptors, 68 $suffixInterceptors, 69 $parent 70 )); 71 } 72 }
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 |