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