* @license MIT */ class MagicIsset extends MagicMethodGenerator { /** * @param ReflectionClass $originalClass * @param PropertyGenerator $prefixInterceptors * @param PropertyGenerator $suffixInterceptors */ public function __construct( ReflectionClass $originalClass, PropertyGenerator $prefixInterceptors, PropertyGenerator $suffixInterceptors ) { parent::__construct($originalClass, '__isset', array(new ParameterGenerator('name'))); $override = $originalClass->hasMethod('__isset'); $this->setDocblock(($override ? "{@inheritDoc}\n" : '') . '@param string $name'); if ($override) { $callParent = '$returnValue = & parent::__isset($name);'; } else { $callParent = PublicScopeSimulator::getPublicAccessSimulationCode( PublicScopeSimulator::OPERATION_ISSET, 'name', null, null, 'returnValue' ); } $this->setBody( InterceptorGenerator::createInterceptedMethodBody( $callParent, $this, $prefixInterceptors, $suffixInterceptors ) ); } }