/** * {@inheritdoc} */ public function endVisit(VisitContext $visitContext) { $writer = $visitContext->createWriter(); $writer->writeln(sprintf('return \'%s\';', $this->elementId)); $method = PhpMethod::create('getElement'); $method->setBody($writer->getContent()); $visitContext->getClass()->setMethod($method); }
/** * {@inheritdoc} */ public function startVisit(VisitContext $visitContext) { $writer = $visitContext->createWriter(); $class = $visitContext->getClass(); $class->addInterfaceName('Oro\\Component\\ConfigExpression\\ExpressionFactoryAwareInterface'); $setFactoryMethod = PhpMethod::create('setExpressionFactory'); $setFactoryMethod->addParameter(PhpParameter::create('expressionFactory')->setType('Oro\\Component\\ConfigExpression\\ExpressionFactoryInterface')); $setFactoryMethod->setBody($writer->write('$this->expressionFactory = $expressionFactory;')->getContent()); $class->setMethod($setFactoryMethod); $factoryProperty = PhpProperty::create('expressionFactory'); $factoryProperty->setVisibility(PhpProperty::VISIBILITY_PRIVATE); $class->setProperty($factoryProperty); $visitContext->getUpdateMethodWriter()->writeln('if (null === $this->expressionFactory) {')->writeln(' throw new \\RuntimeException(\'Missing expression factory for layout update\');')->writeln('}')->writeln('')->writeln(sprintf('$expr = %s;', $this->expression->compile('$this->expressionFactory')))->writeln(sprintf('$context = [\'context\' => $%s->getContext()];', LayoutUpdateGeneratorInterface::PARAM_LAYOUT_ITEM))->writeln('if ($expr->evaluate($context)) {')->indent(); }
public function testContextClassGetter() { $class = $this->getClass(); $visitContext = new VisitContext($class); $this->assertSame($class, $visitContext->getClass()); }