2 namespace TYPO3\CMS\Fluid\Core\Parser\SyntaxTree;
56 $this->uninitializedViewHelper = $viewHelper;
57 $this->viewHelpersByContext = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Persistence\ObjectStorage::class);
59 $this->viewHelperClassName = get_class($this->uninitializedViewHelper);
107 public function evaluate(\TYPO3\CMS\
Fluid\Core\Rendering\RenderingContextInterface $renderingContext)
109 if ($this->viewHelpersByContext->contains($renderingContext)) {
110 $viewHelper = $this->viewHelpersByContext[$renderingContext];
111 $viewHelper->resetState();
114 $this->viewHelpersByContext->attach($renderingContext, $viewHelper);
117 $evaluatedArguments = array();
118 if (count($viewHelper->prepareArguments())) {
119 foreach ($viewHelper->prepareArguments() as $argumentName => $argumentDefinition) {
120 if (isset($this->arguments[$argumentName])) {
121 $argumentValue = $this->arguments[$argumentName];
122 $evaluatedArguments[$argumentName] = $argumentValue->evaluate($renderingContext);
124 $evaluatedArguments[$argumentName] = $argumentDefinition->getDefaultValue();
129 $viewHelper->setArguments($evaluatedArguments);
130 $viewHelper->setViewHelperNode($this);
131 $viewHelper->setRenderingContext($renderingContext);
133 if ($viewHelper instanceof \TYPO3\CMS\
Fluid\Core\ViewHelper\Facets\ChildNodeAccessInterface) {
134 $viewHelper->setChildNodes($this->childNodes);
137 $output = $viewHelper->initializeArgumentsAndRender();
149 return array(
'viewHelperClassName',
'arguments',
'childNodes');