[TASK] Remove own implementations in AbstractViewHelper 11/49011/7
authorNicole Cordes <typo3@cordes.co>
Sun, 17 Jul 2016 10:08:27 +0000 (12:08 +0200)
committerMarkus Klein <markus.klein@typo3.org>
Wed, 20 Jul 2016 09:23:04 +0000 (11:23 +0200)
The own implementation of AbstractViewHelper::registerArgument and
AbstractViewHelper::overrideArgument aren't needed anymore. Both
functions of the Fluid Standalone can be used safely.

Furthermore two unused private properties are removed with this patch.

Resolves: #77134
Releases: master
Change-Id: Ib82715252b1a64c9c37955576e55ad9b11defad6
Reviewed-on: https://review.typo3.org/49011
Reviewed-by: Claus Due <claus@phpmind.net>
Tested-by: Bamboo TYPO3com <info@typo3.com>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php

index 6bb8db5..265e526 100644 (file)
@@ -26,32 +26,6 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper implements \TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperInterface
 {
     /**
-     * TRUE if arguments have already been initialized
-     *
-     * @var bool
-     */
-    private $argumentsInitialized = false;
-
-    /**
-     * Cache of argument definitions; the key is the ViewHelper class name, and the
-     * value is the array of argument definitions.
-     *
-     * In our benchmarks, this cache leads to a 40% improvement when using a certain
-     * ViewHelper class many times throughout the rendering process.
-     *
-     * @var array
-     */
-    private static $argumentDefinitionCache = array();
-
-    /**
-     * Current variable container reference.
-     *
-     * @var \TYPO3\CMS\Fluid\Core\ViewHelper\TemplateVariableContainer
-     * @api
-     */
-    protected $templateVariableContainer;
-
-    /**
      * Controller Context to use
      *
      * @var \TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext
@@ -60,24 +34,6 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     protected $controllerContext;
 
     /**
-     * @var \TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface
-     */
-    protected $renderingContext;
-
-    /**
-     * @var \Closure
-     */
-    protected $renderChildrenClosure = null;
-
-    /**
-     * ViewHelper Variable Container
-     *
-     * @var \TYPO3\CMS\Fluid\Core\ViewHelper\ViewHelperVariableContainer
-     * @api
-     */
-    protected $viewHelperVariableContainer;
-
-    /**
      * Reflection service
      *
      * @var \TYPO3\CMS\Extbase\Reflection\ReflectionService
@@ -95,9 +51,7 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
      */
     public function setRenderingContext(\TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface $renderingContext)
     {
-        $this->renderingContext = $renderingContext;
-        $this->templateVariableContainer = $renderingContext->getVariableProvider();
-        $this->viewHelperVariableContainer = $renderingContext->getViewHelperVariableContainer();
+        parent::setRenderingContext($renderingContext);
         if ($renderingContext instanceof \TYPO3\CMS\Fluid\Core\Rendering\RenderingContext) {
             $this->controllerContext = $renderingContext->getControllerContext();
         }
@@ -122,75 +76,6 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     }
 
     /**
-     * Register a new argument. Call this method from your ViewHelper subclass
-     * inside the initializeArguments() method.
-     *
-     * @param string $name Name of the argument
-     * @param string $type Type of the argument
-     * @param string $description Description of the argument
-     * @param bool $required If TRUE, argument is required. Defaults to FALSE.
-     * @param mixed $defaultValue Default value of argument
-     * @return \TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperInterface $this, to allow chaining.
-     * @throws \TYPO3Fluid\Fluid\Core\ViewHelper\Exception
-     * @api
-     */
-    protected function registerArgument($name, $type, $description, $required = false, $defaultValue = null)
-    {
-        if (array_key_exists($name, $this->argumentDefinitions)) {
-            throw new \TYPO3Fluid\Fluid\Core\ViewHelper\Exception('Argument "' . $name . '" has already been defined, thus it should not be defined again.', 1253036401);
-        }
-        $this->argumentDefinitions[$name] = new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition($name, $type, $description, $required, $defaultValue);
-        return $this;
-    }
-
-    /**
-     * Overrides a registered argument. Call this method from your ViewHelper subclass
-     * inside the initializeArguments() method if you want to override a previously registered argument.
-     *
-     * @see registerArgument()
-     * @param string $name Name of the argument
-     * @param string $type Type of the argument
-     * @param string $description Description of the argument
-     * @param bool $required If TRUE, argument is required. Defaults to FALSE.
-     * @param mixed $defaultValue Default value of argument
-     * @return \TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperInterface $this, to allow chaining.
-     * @throws \TYPO3Fluid\Fluid\Core\ViewHelper\Exception
-     * @api
-     */
-    protected function overrideArgument($name, $type, $description, $required = false, $defaultValue = null)
-    {
-        if (!array_key_exists($name, $this->argumentDefinitions)) {
-            throw new \TYPO3\CMS\Fluid\Core\ViewHelper\Exception('Argument "' . $name . '" has not been defined, thus it can\'t be overridden.', 1279212461);
-        }
-        $this->argumentDefinitions[$name] = new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition($name, $type, $description, $required, $defaultValue);
-        return $this;
-    }
-
-    /**
-     * Called when being inside a cached template.
-     *
-     * @param \Closure $renderChildrenClosure
-     * @return void
-     */
-    public function setRenderChildrenClosure(\Closure $renderChildrenClosure)
-    {
-        $this->renderChildrenClosure = $renderChildrenClosure;
-    }
-
-    /**
-     * Initialize the arguments of the ViewHelper, and call the render() method of the ViewHelper.
-     *
-     * @return string the rendered ViewHelper.
-     */
-    public function initializeArgumentsAndRender()
-    {
-        $this->validateArguments();
-        $this->initialize();
-
-        return $this->callRenderMethod();
-    }
-
-    /**
      * Call the render() method and handle errors.
      *
      * @return string the rendered ViewHelper
@@ -226,50 +111,6 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     }
 
     /**
-     * Initializes the view helper before invoking the render method.
-     *
-     * Override this method to solve tasks before the view helper content is rendered.
-     *
-     * @return void
-     * @api
-     */
-    public function initialize()
-    {
-    }
-
-    /**
-     * Helper method which triggers the rendering of everything between the
-     * opening and the closing tag.
-     *
-     * @return mixed The finally rendered child nodes.
-     * @api
-     */
-    public function renderChildren()
-    {
-        if ($this->renderChildrenClosure !== null) {
-            $closure = $this->renderChildrenClosure;
-            return $closure();
-        }
-        return $this->viewHelperNode->evaluateChildNodes($this->renderingContext);
-    }
-
-    /**
-     * Helper which is mostly needed when calling renderStatic() from within
-     * render().
-     *
-     * No public API yet.
-     *
-     * @return \Closure
-     */
-    protected function buildRenderChildrenClosure()
-    {
-        $self = $this;
-        return function () use ($self) {
-            return $self->renderChildren();
-        };
-    }
-
-    /**
      * Register method arguments for "render" by analysing the doc comment above.
      *
      * @return void
index 0d24fbc..0cfba7b 100644 (file)
@@ -177,78 +177,6 @@ class AbstractViewHelperTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
     /**
      * @test
      */
-    public function argumentsCanBeRegistered()
-    {
-        $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, array('render'), array(), '', false);
-        $viewHelper->injectReflectionService($this->mockReflectionService);
-
-        $name = 'This is a name';
-        $description = 'Example desc';
-        $type = 'string';
-        $isRequired = true;
-        $expected = new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition($name, $type, $description, $isRequired);
-
-        $viewHelper->_call('registerArgument', $name, $type, $description, $isRequired);
-        $this->assertEquals(array($name => $expected), $viewHelper->prepareArguments(), 'Argument definitions not returned correctly.');
-    }
-
-    /**
-     * @test
-     */
-    public function registeringTheSameArgumentNameAgainThrowsException()
-    {
-        $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, array('render'), array(), '', false);
-
-        $name = 'shortName';
-        $description = 'Example desc';
-        $type = 'string';
-        $isRequired = true;
-
-        $this->expectException(\TYPO3\CMS\Fluid\Core\ViewHelper\Exception::class);
-        $this->expectExceptionCode(1253036401);
-
-        $viewHelper->_call('registerArgument', $name, $type, $description, $isRequired);
-        $viewHelper->_call('registerArgument', $name, 'integer', $description, $isRequired);
-    }
-
-    /**
-     * @test
-     */
-    public function overrideArgumentOverwritesExistingArgumentDefinition()
-    {
-        $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, array('render'), array(), '', false);
-        $viewHelper->injectReflectionService($this->mockReflectionService);
-
-        $name = 'argumentName';
-        $description = 'argument description';
-        $overriddenDescription = 'overwritten argument description';
-        $type = 'string';
-        $overriddenType = 'integer';
-        $isRequired = true;
-        $expected = new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition($name, $overriddenType, $overriddenDescription, $isRequired);
-
-        $viewHelper->_call('registerArgument', $name, $type, $description, $isRequired);
-        $viewHelper->_call('overrideArgument', $name, $overriddenType, $overriddenDescription, $isRequired);
-        $this->assertEquals($viewHelper->prepareArguments(), array($name => $expected), 'Argument definitions not returned correctly. The original ArgumentDefinition could not be overridden.');
-    }
-
-    /**
-     * @test
-     */
-    public function overrideArgumentThrowsExceptionWhenTryingToOverwriteAnNonexistingArgument()
-    {
-        $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, array('render'), array(), '', false);
-        $viewHelper->injectReflectionService($this->mockReflectionService);
-
-        $this->expectException(\TYPO3\CMS\Fluid\Core\ViewHelper\Exception::class);
-        $this->expectExceptionCode(1279212461);
-
-        $viewHelper->_call('overrideArgument', 'argumentName', 'string', 'description', true);
-    }
-
-    /**
-     * @test
-     */
     public function prepareArgumentsCallsInitializeArguments()
     {
         $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, array('render', 'initializeArguments'), array(), '', false);