* @license MIT */ class MagicIsset extends MagicMethodGenerator { /** * Constructor */ public function __construct( ReflectionClass $originalClass, PropertyGenerator $valueHolder, PropertyGenerator $prefixInterceptors, PropertyGenerator $suffixInterceptors, PublicPropertiesMap $publicProperties ) { parent::__construct($originalClass, '__isset', array(new ParameterGenerator('name'))); $override = $originalClass->hasMethod('__isset'); $valueHolderName = $valueHolder->getName(); $this->setDocblock(($override ? "{@inheritDoc}\n" : '') . '@param string $name'); $callParent = PublicScopeSimulator::getPublicAccessSimulationCode( PublicScopeSimulator::OPERATION_ISSET, 'name', 'value', $valueHolder, 'returnValue' ); if (! $publicProperties->isEmpty()) { $callParent = 'if (isset(self::$' . $publicProperties->getName() . "[\$name])) {\n" . ' $returnValue = isset($this->' . $valueHolderName . '->$name);' . "\n} else {\n $callParent\n}\n\n"; } $this->setBody( InterceptorGenerator::createInterceptedMethodBody( $callParent, $this, $valueHolder, $prefixInterceptors, $suffixInterceptors ) ); } }