[TASK] Replace `get_class($this)` calls with `static::class` 69/54069/2
authorRomain Canon <romain.hydrocanon@gmail.com>
Sat, 9 Sep 2017 16:13:26 +0000 (18:13 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Sat, 9 Sep 2017 18:58:59 +0000 (20:58 +0200)
Improves runtime performance of these calls by approximately 1/3.

See https://belineperspectives.com/2017/03/13/get_classthis-vs-staticclass/

Resolves: #82416
Releases: master
Change-Id: I7a069068ed66cbb4ebd83bdad56c621166bf8139
Reviewed-on: https://review.typo3.org/54069
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Simon Praetorius <simon@praetorius.me>
Reviewed-by: Nathan Boiron <nathan.boiron@gmail.com>
Reviewed-by: Matthias Vogel <typo3@kanti.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
42 files changed:
typo3/sysext/backend/Classes/Module/AbstractModule.php
typo3/sysext/backend/Classes/Template/Components/Buttons/AbstractButton.php
typo3/sysext/backend/Classes/Template/Components/Buttons/Action/HelpButton.php
typo3/sysext/backend/Classes/Template/Components/Buttons/Action/ShortcutButton.php
typo3/sysext/backend/Classes/Template/Components/Buttons/FullyRenderedButton.php
typo3/sysext/backend/Classes/Tree/ExtDirectNode.php
typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php
typo3/sysext/backend/Classes/Tree/TreeNode.php
typo3/sysext/backend/Classes/Tree/TreeNodeCollection.php
typo3/sysext/backend/Classes/Tree/View/ElementBrowserFolderTreeView.php
typo3/sysext/backend/Classes/Tree/View/FolderTreeView.php
typo3/sysext/belog/Classes/Controller/AbstractController.php
typo3/sysext/core/Classes/Cache/Backend/AbstractBackend.php
typo3/sysext/core/Classes/Database/SoftReferenceIndex.php
typo3/sysext/core/Classes/Html/RteHtmlParser.php
typo3/sysext/core/Classes/Log/Processor/AbstractProcessor.php
typo3/sysext/core/Classes/Log/Writer/AbstractWriter.php
typo3/sysext/core/Classes/Package/Package.php
typo3/sysext/core/Classes/Resource/ResourceStorage.php
typo3/sysext/core/Classes/Session/Backend/DatabaseSessionBackend.php
typo3/sysext/core/Classes/Type/Bitmask/JsConfirmation.php
typo3/sysext/core/Classes/Type/Enumeration.php
typo3/sysext/core/Classes/Type/File/ImageInfo.php
typo3/sysext/core/Tests/Unit/Resource/Driver/LocalDriverTest.php
typo3/sysext/extbase/Classes/DomainObject/AbstractDomainObject.php
typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php
typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php
typo3/sysext/extbase/Classes/Mvc/Controller/CommandController.php
typo3/sysext/extbase/Classes/Persistence/Repository.php
typo3/sysext/extbase/Classes/Property/PropertyMappingConfiguration.php
typo3/sysext/extbase/Tests/Unit/Reflection/ReflectionServiceTest.php
typo3/sysext/extensionmanager/Classes/Utility/Importer/ExtensionListUtility.php
typo3/sysext/extensionmanager/Classes/Utility/Importer/MirrorListUtility.php
typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractTagBasedViewHelper.php
typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php
typo3/sysext/fluid/Classes/Core/Widget/AbstractWidgetViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Widget/Controller/PaginateController.php
typo3/sysext/frontend/Tests/Unit/ContentObject/ContentDataProcessorTest.php
typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/MenuContentObjectFactoryTest.php
typo3/sysext/install/Classes/SystemEnvironment/Check.php
typo3/sysext/install/Classes/Updates/AbstractUpdate.php
typo3/sysext/scheduler/Classes/Task/AbstractTask.php

index 1af0d0b..aeae8ab 100644 (file)
@@ -65,7 +65,7 @@ class AbstractModule
         $methodName = $request->getQueryParams()['action'] ?: 'index';
         if (!is_callable([$this, $methodName])) {
             throw new \InvalidArgumentException(
-                'The method "' . $methodName . '" is not callable within "' . get_class($this) . '".',
+                'The method "' . $methodName . '" is not callable within "' . static::class . '".',
                 1442736343
             );
         }
index 5a06230..4460942 100644 (file)
@@ -83,7 +83,7 @@ class AbstractButton extends AbstractControl implements ButtonInterface
      */
     public function getType()
     {
-        return get_class($this);
+        return static::class;
     }
 
     /**
index cb96483..6ee8e4b 100644 (file)
@@ -116,7 +116,7 @@ class HelpButton implements ButtonInterface, PositionInterface
      */
     public function getType()
     {
-        return get_class($this);
+        return static::class;
     }
 
     /**
index b3b8150..f5f7e9d 100644 (file)
@@ -177,7 +177,7 @@ class ShortcutButton implements ButtonInterface, PositionInterface
      */
     public function getType()
     {
-        return get_class($this);
+        return static::class;
     }
 
     /**
index 99ebfbf..5cc3d62 100644 (file)
@@ -70,7 +70,7 @@ class FullyRenderedButton implements ButtonInterface
      */
     public function getType()
     {
-        return get_class($this);
+        return static::class;
     }
 
     /**
index fe1d513..dff8630 100644 (file)
@@ -560,7 +560,7 @@ class ExtDirectNode extends \TYPO3\CMS\Backend\Tree\TreeNode
     public function toArray($addChildNodes = true)
     {
         $arrayRepresentation = [
-            'serializeClassName' => get_class($this),
+            'serializeClassName' => static::class,
             'id' => $this->getId(),
             'type' => $this->getType(),
             'editableText' => $this->getEditableText(),
index c6ed33c..71abfbe 100644 (file)
@@ -425,7 +425,7 @@ class PagetreeNode extends \TYPO3\CMS\Backend\Tree\ExtDirectNode
         $arrayRepresentation['nodeData']['isMountPoint'] = $this->isMountPoint();
         $arrayRepresentation['nodeData']['backgroundColor'] = htmlspecialchars($this->getBackgroundColor());
         $arrayRepresentation['nodeData']['stopPageTree'] = $this->getStopPageTree();
-        $arrayRepresentation['nodeData']['serializeClassName'] = get_class($this);
+        $arrayRepresentation['nodeData']['serializeClassName'] = static::class;
         return $arrayRepresentation;
     }
 
index c46e38e..12e2012 100644 (file)
@@ -180,7 +180,7 @@ class TreeNode implements \TYPO3\CMS\Backend\Tree\ComparableNodeInterface, \Seri
     public function toArray($addChildNodes = true)
     {
         $arrayRepresentation = [
-            'serializeClassName' => get_class($this),
+            'serializeClassName' => static::class,
             'id' => $this->id
         ];
         if ($this->parentNode !== null) {
@@ -231,7 +231,7 @@ class TreeNode implements \TYPO3\CMS\Backend\Tree\ComparableNodeInterface, \Seri
     public function unserialize($serializedString)
     {
         $arrayRepresentation = unserialize($serializedString);
-        if ($arrayRepresentation['serializeClassName'] !== get_class($this)) {
+        if ($arrayRepresentation['serializeClassName'] !== static::class) {
             throw new \TYPO3\CMS\Core\Exception('Deserialized object type is not identical!', 1294586646);
         }
         $this->dataFromArray($arrayRepresentation);
index 1dc338a..b1247dd 100644 (file)
@@ -73,7 +73,7 @@ class TreeNodeCollection extends \ArrayObject
     public function unserialize($serializedString)
     {
         $arrayRepresentation = unserialize($serializedString);
-        if ($arrayRepresentation['serializeClassName'] !== get_class($this)) {
+        if ($arrayRepresentation['serializeClassName'] !== static::class) {
             throw new \TYPO3\CMS\Core\Exception('Deserialized object type is not identical!', 1294586647);
         }
         $this->dataFromArray($arrayRepresentation);
@@ -87,7 +87,7 @@ class TreeNodeCollection extends \ArrayObject
     public function toArray()
     {
         $arrayRepresentation = [
-            'serializeClassName' => get_class($this)
+            'serializeClassName' => static::class
         ];
         $iterator = $this->getIterator();
         while ($iterator->valid()) {
index 15392f6..3912258 100644 (file)
@@ -107,7 +107,7 @@ class ElementBrowserFolderTreeView extends FolderTreeView
      */
     protected function renderPMIconAndLink($cmd, $isOpen)
     {
-        if (get_class($this) === __CLASS__) {
+        if (static::class === __CLASS__) {
             return $this->PMiconATagWrap('', $cmd, !$isOpen);
         }
         return parent::renderPMIconAndLink($cmd, $isOpen);
@@ -146,7 +146,7 @@ class ElementBrowserFolderTreeView extends FolderTreeView
     {
         if (empty($this->scope)) {
             $this->scope = [
-                'class' => get_class($this),
+                'class' => static::class,
                 'script' => $this->thisScript,
                 'ext_noTempRecyclerDirs' => $this->ext_noTempRecyclerDirs,
                 'browser' => $this->linkParameterProvider->getUrlParameters([]),
index b087567..24b7545 100644 (file)
@@ -134,7 +134,7 @@ class FolderTreeView extends AbstractTreeView
     {
         if (empty($this->scope)) {
             $this->scope = [
-                'class' => get_class($this),
+                'class' => static::class,
                 'script' => $this->thisScript,
                 'ext_noTempRecyclerDirs' => $this->ext_noTempRecyclerDirs
             ];
index 8e21899..a00b6e9 100644 (file)
@@ -173,7 +173,7 @@ abstract class AbstractController extends ActionController
      */
     protected function getConstraintFromBeUserData()
     {
-        $serializedConstraint = $GLOBALS['BE_USER']->getModuleData(get_class($this));
+        $serializedConstraint = $GLOBALS['BE_USER']->getModuleData(static::class);
         if (!is_string($serializedConstraint) || empty($serializedConstraint)) {
             return null;
         }
@@ -187,7 +187,7 @@ abstract class AbstractController extends ActionController
      */
     protected function persistConstraintInBeUserData(\TYPO3\CMS\Belog\Domain\Model\Constraint $constraint)
     {
-        $GLOBALS['BE_USER']->pushModuleData(get_class($this), serialize($constraint));
+        $GLOBALS['BE_USER']->pushModuleData(static::class, serialize($constraint));
     }
 
     /**
index 0540cf3..6ef1d02 100644 (file)
@@ -71,7 +71,7 @@ abstract class AbstractBackend implements \TYPO3\CMS\Core\Cache\Backend\BackendI
                 if (method_exists($this, $methodName)) {
                     $this->{$methodName}($optionValue);
                 } else {
-                    throw new \InvalidArgumentException('Invalid cache backend option "' . $optionKey . '" for backend of type "' . get_class($this) . '"', 1231267498);
+                    throw new \InvalidArgumentException('Invalid cache backend option "' . $optionKey . '" for backend of type "' . static::class . '"', 1231267498);
                 }
             }
         }
index 8a12d24..b3ed3dc 100644 (file)
@@ -710,7 +710,7 @@ class SoftReferenceIndex
      */
     protected function emitGetTypoLinkParts($linkHandlerFound, $finalTagParts, $linkHandlerKeyword, $linkHandlerValue)
     {
-        return $this->getSignalSlotDispatcher()->dispatch(get_class($this), 'getTypoLinkParts', [$linkHandlerFound, $finalTagParts, $linkHandlerKeyword, $linkHandlerValue]);
+        return $this->getSignalSlotDispatcher()->dispatch(static::class, 'getTypoLinkParts', [$linkHandlerFound, $finalTagParts, $linkHandlerKeyword, $linkHandlerValue]);
     }
 
     /**
@@ -724,6 +724,6 @@ class SoftReferenceIndex
      */
     protected function emitSetTypoLinkPartsElement($linkHandlerFound, $tLP, $content, $elements, $idx, $tokenID)
     {
-        return $this->getSignalSlotDispatcher()->dispatch(get_class($this), 'setTypoLinkPartsElement', [$linkHandlerFound, $tLP, $content, $elements, $idx, $tokenID, $this]);
+        return $this->getSignalSlotDispatcher()->dispatch(static::class, 'setTypoLinkPartsElement', [$linkHandlerFound, $tLP, $content, $elements, $idx, $tokenID, $this]);
     }
 }
index 9c30b85..05201f8 100644 (file)
@@ -1321,6 +1321,6 @@ class RteHtmlParser extends HtmlParser
     {
         /** @var $logManager LogManager */
         $logManager = GeneralUtility::makeInstance(LogManager::class);
-        return $logManager->getLogger(get_class($this));
+        return $logManager->getLogger(static::class);
     }
 }
index 1e7143f..56b7a9d 100644 (file)
@@ -34,7 +34,7 @@ abstract class AbstractProcessor implements ProcessorInterface
             if (method_exists($this, $methodName)) {
                 $this->{$methodName}($optionValue);
             } else {
-                throw new InvalidLogProcessorConfigurationException('Invalid LogProcessor configuration option "' . $optionKey . '" for log processor of type "' . get_class($this) . '"', 1321696151);
+                throw new InvalidLogProcessorConfigurationException('Invalid LogProcessor configuration option "' . $optionKey . '" for log processor of type "' . static::class . '"', 1321696151);
             }
         }
     }
index 77adfa2..50f851a 100644 (file)
@@ -34,7 +34,7 @@ abstract class AbstractWriter implements WriterInterface
             if (method_exists($this, $methodName)) {
                 $this->{$methodName}($optionValue);
             } else {
-                throw new InvalidLogWriterConfigurationException('Invalid LogWriter configuration option "' . $optionKey . '" for log writer of type "' . get_class($this) . '"', 1321696152);
+                throw new InvalidLogWriterConfigurationException('Invalid LogWriter configuration option "' . $optionKey . '" for log writer of type "' . static::class . '"', 1321696152);
             }
         }
     }
index 3450a57..e810a29 100644 (file)
@@ -264,7 +264,7 @@ class Package implements PackageInterface
      */
     public function __sleep()
     {
-        $properties = get_class_vars(get_class($this));
+        $properties = get_class_vars(static::class);
         unset($properties['packageManager']);
         return array_keys($properties);
     }
index 4107be4..d08ac76 100644 (file)
@@ -3021,6 +3021,6 @@ class ResourceStorage implements ResourceStorageInterface
         $logManager = GeneralUtility::makeInstance(
             \TYPO3\CMS\Core\Log\LogManager::class
         );
-        return $logManager->getLogger(get_class($this));
+        return $logManager->getLogger(static::class);
     }
 }
index 58a4a8b..ca73309 100644 (file)
@@ -66,7 +66,7 @@ class DatabaseSessionBackend implements SessionBackendInterface
     {
         if (empty($this->configuration['table'])) {
             throw new \InvalidArgumentException(
-                'The session backend "' . get_class($this) . '" needs a "table" configuration.',
+                'The session backend "' . static::class . '" needs a "table" configuration.',
                 1442996707
             );
         }
index 2308f04..bfc6ab2 100644 (file)
@@ -110,7 +110,7 @@ class JsConfirmation extends Enumeration
         }
 
         $value = (string)$value;
-        foreach (static::$enumConstants[get_class($this)] as $constantValue) {
+        foreach (static::$enumConstants[static::class] as $constantValue) {
             if ($value === (string)$constantValue) {
                 return true;
             }
index 2bd65e8..22167ee 100644 (file)
@@ -41,7 +41,7 @@ abstract class Enumeration implements TypeInterface
     {
         if ($value === null && !defined('static::__default')) {
             throw new Exception\InvalidEnumerationValueException(
-                sprintf('A value for enumeration "%s" is required if no __default is defined.', get_class($this)),
+                sprintf('A value for enumeration "%s" is required if no __default is defined.', static::class),
                 1381512753
             );
         }
@@ -51,7 +51,7 @@ abstract class Enumeration implements TypeInterface
         static::loadValues();
         if (!$this->isValid($value)) {
             throw new Exception\InvalidEnumerationValueException(
-                sprintf('Invalid value "%s" for enumeration "%s"', $value, get_class($this)),
+                sprintf('Invalid value "%s" for enumeration "%s"', $value, static::class),
                 1381512761
             );
         }
@@ -130,14 +130,14 @@ abstract class Enumeration implements TypeInterface
      */
     protected function setValue($value)
     {
-        $enumKey = array_search($value, static::$enumConstants[get_class($this)]);
+        $enumKey = array_search($value, static::$enumConstants[static::class]);
         if ($enumKey === false) {
             throw new Exception\InvalidEnumerationValueException(
                 sprintf('Invalid value "%s" for enumeration "%s"', $value, __CLASS__),
                 1381615295
             );
         }
-        $this->value = static::$enumConstants[get_class($this)][$enumKey];
+        $this->value = static::$enumConstants[static::class][$enumKey];
     }
 
     /**
@@ -149,7 +149,7 @@ abstract class Enumeration implements TypeInterface
     protected function isValid($value)
     {
         $value = (string)$value;
-        foreach (static::$enumConstants[get_class($this)] as $constantValue) {
+        foreach (static::$enumConstants[static::class] as $constantValue) {
             if ($value === (string)$constantValue) {
                 return true;
             }
index c9de84d..7c6e5e6 100644 (file)
@@ -113,7 +113,7 @@ class ImageInfo extends FileInfo
         /** @var $loggerManager LogManager */
         $loggerManager = GeneralUtility::makeInstance(LogManager::class);
 
-        return $loggerManager->getLogger(get_class($this));
+        return $loggerManager->getLogger(static::class);
     }
 
     /**
index 24481d5..f671d31 100644 (file)
@@ -741,7 +741,7 @@ class LocalDriverTest extends \TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCase
         // register static callback to self
         $callback = [
             [
-                get_class($this),
+                static::class,
                 'callbackStaticTestFunction'
             ]
         ];
index 2ff8abf..8990f12 100644 (file)
@@ -323,6 +323,6 @@ abstract class AbstractDomainObject implements DomainObjectInterface, \TYPO3\CMS
      */
     public function __toString()
     {
-        return get_class($this) . ':' . (string)$this->uid;
+        return static::class . ':' . (string)$this->uid;
     }
 }
index 441ec5a..1a6e9de 100644 (file)
@@ -130,7 +130,7 @@ abstract class AbstractController implements ControllerInterface
      */
     public function __construct()
     {
-        $className = get_class($this);
+        $className = static::class;
         if (strpos($className, '\\') !== false) {
             $classNameParts = explode('\\', $className, 4);
             // Skip vendor and product name for core classes
@@ -223,7 +223,7 @@ abstract class AbstractController implements ControllerInterface
     public function processRequest(\TYPO3\CMS\Extbase\Mvc\RequestInterface $request, \TYPO3\CMS\Extbase\Mvc\ResponseInterface $response)
     {
         if (!$this->canProcessRequest($request)) {
-            throw new UnsupportedRequestTypeException(get_class($this) . ' does not support requests of type "' . get_class($request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes), 1187701132);
+            throw new UnsupportedRequestTypeException(static::class . ' does not support requests of type "' . get_class($request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes), 1187701132);
         }
         if ($response instanceof \TYPO3\CMS\Extbase\Mvc\Web\Response && $request instanceof WebRequest) {
             $response->setRequest($request);
index a3ff074..c97960d 100644 (file)
@@ -147,7 +147,7 @@ class ActionController extends AbstractController
     public function processRequest(\TYPO3\CMS\Extbase\Mvc\RequestInterface $request, \TYPO3\CMS\Extbase\Mvc\ResponseInterface $response)
     {
         if (!$this->canProcessRequest($request)) {
-            throw new \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException(get_class($this) . ' does not support requests of type "' . get_class($request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes), 1187701131);
+            throw new \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException(static::class . ' does not support requests of type "' . get_class($request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes), 1187701131);
         }
 
         if ($response instanceof \TYPO3\CMS\Extbase\Mvc\Web\Response && $request instanceof WebRequest) {
@@ -224,7 +224,7 @@ class ActionController extends AbstractController
      */
     protected function initializeActionMethodArguments()
     {
-        $methodParameters = $this->reflectionService->getMethodParameters(get_class($this), $this->actionMethodName);
+        $methodParameters = $this->reflectionService->getMethodParameters(static::class, $this->actionMethodName);
         foreach ($methodParameters as $parameterName => $parameterInfo) {
             $dataType = null;
             if (isset($parameterInfo['type'])) {
@@ -233,7 +233,7 @@ class ActionController extends AbstractController
                 $dataType = 'array';
             }
             if ($dataType === null) {
-                throw new \TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentTypeException('The argument type for parameter $' . $parameterName . ' of method ' . get_class($this) . '->' . $this->actionMethodName . '() could not be detected.', 1253175643);
+                throw new \TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentTypeException('The argument type for parameter $' . $parameterName . ' of method ' . static::class . '->' . $this->actionMethodName . '() could not be detected.', 1253175643);
             }
             $defaultValue = isset($parameterInfo['defaultValue']) ? $parameterInfo['defaultValue'] : null;
             $this->arguments->addNewArgument($parameterName, $dataType, $parameterInfo['optional'] === false, $defaultValue);
@@ -266,7 +266,7 @@ class ActionController extends AbstractController
          * @todo: add resolving of $actionValidateAnnotations and pass them to
          * buildMethodArgumentsValidatorConjunctions as in TYPO3.Flow
          */
-        $parameterValidators = $this->validatorResolver->buildMethodArgumentsValidatorConjunctions(get_class($this), $this->actionMethodName, $methodParameters);
+        $parameterValidators = $this->validatorResolver->buildMethodArgumentsValidatorConjunctions(static::class, $this->actionMethodName, $methodParameters);
         /** @var \TYPO3\CMS\Extbase\Mvc\Controller\Argument $argument */
         foreach ($this->arguments as $argument) {
             $validator = $parameterValidators[$argument->getName()];
@@ -289,7 +289,7 @@ class ActionController extends AbstractController
     {
         $actionMethodName = $this->request->getControllerActionName() . 'Action';
         if (!method_exists($this, $actionMethodName)) {
-            throw new \TYPO3\CMS\Extbase\Mvc\Exception\NoSuchActionException('An action "' . $actionMethodName . '" does not exist in controller "' . get_class($this) . '".', 1186669086);
+            throw new \TYPO3\CMS\Extbase\Mvc\Exception\NoSuchActionException('An action "' . $actionMethodName . '" does not exist in controller "' . static::class . '".', 1186669086);
         }
         return $actionMethodName;
     }
@@ -315,7 +315,7 @@ class ActionController extends AbstractController
             $this->emitBeforeCallActionMethodSignal($preparedArguments);
             $actionResult = call_user_func_array([$this, $this->actionMethodName], $preparedArguments);
         } else {
-            $methodTagsValues = $this->reflectionService->getMethodTagsValues(get_class($this), $this->actionMethodName);
+            $methodTagsValues = $this->reflectionService->getMethodTagsValues(static::class, $this->actionMethodName);
             $ignoreValidationAnnotations = [];
             if (isset($methodTagsValues['ignorevalidation'])) {
                 $ignoreValidationAnnotations = $methodTagsValues['ignorevalidation'];
@@ -357,7 +357,7 @@ class ActionController extends AbstractController
      */
     protected function emitBeforeCallActionMethodSignal(array $preparedArguments)
     {
-        $this->signalSlotDispatcher->dispatch(__CLASS__, 'beforeCallActionMethod', [get_class($this), $this->actionMethodName, $preparedArguments]);
+        $this->signalSlotDispatcher->dispatch(__CLASS__, 'beforeCallActionMethod', [static::class, $this->actionMethodName, $preparedArguments]);
     }
 
     /**
@@ -593,7 +593,7 @@ class ActionController extends AbstractController
      */
     protected function getErrorFlashMessage()
     {
-        return 'An error occurred while trying to call ' . get_class($this) . '->' . $this->actionMethodName . '()';
+        return 'An error occurred while trying to call ' . static::class . '->' . $this->actionMethodName . '()';
     }
 
     /**
@@ -628,7 +628,7 @@ class ActionController extends AbstractController
      */
     protected function getFlattenedValidationErrorMessage()
     {
-        $outputMessage = 'Validation failed while trying to call ' . get_class($this) . '->' . $this->actionMethodName . '().' . PHP_EOL;
+        $outputMessage = 'Validation failed while trying to call ' . static::class . '->' . $this->actionMethodName . '().' . PHP_EOL;
         return $outputMessage;
     }
 
index 377d2ab..ee06784 100644 (file)
@@ -118,7 +118,7 @@ class CommandController implements CommandControllerInterface
     public function processRequest(RequestInterface $request, ResponseInterface $response)
     {
         if (!$this->canProcessRequest($request)) {
-            throw new UnsupportedRequestTypeException(sprintf('%s only supports command line requests – requests of type "%s" given.', get_class($this), get_class($request)), 1300787096);
+            throw new UnsupportedRequestTypeException(sprintf('%s only supports command line requests – requests of type "%s" given.', static::class, get_class($request)), 1300787096);
         }
 
         $this->request = $request;
@@ -147,7 +147,7 @@ class CommandController implements CommandControllerInterface
     {
         $commandMethodName = $this->request->getControllerCommandName() . 'Command';
         if (!is_callable([$this, $commandMethodName])) {
-            throw new NoSuchCommandException(sprintf('A command method "%s()" does not exist in controller "%s".', $commandMethodName, get_class($this)), 1300902143);
+            throw new NoSuchCommandException(sprintf('A command method "%s()" does not exist in controller "%s".', $commandMethodName, static::class), 1300902143);
         }
         return $commandMethodName;
     }
@@ -161,7 +161,7 @@ class CommandController implements CommandControllerInterface
      */
     protected function initializeCommandMethodArguments()
     {
-        $methodParameters = $this->reflectionService->getMethodParameters(get_class($this), $this->commandMethodName);
+        $methodParameters = $this->reflectionService->getMethodParameters(static::class, $this->commandMethodName);
 
         foreach ($methodParameters as $parameterName => $parameterInfo) {
             $dataType = null;
@@ -171,7 +171,7 @@ class CommandController implements CommandControllerInterface
                 $dataType = 'array';
             }
             if ($dataType === null) {
-                throw new InvalidArgumentTypeException(sprintf('The argument type for parameter $%s of method %s->%s() could not be detected.', $parameterName, get_class($this), $this->commandMethodName), 1306755296);
+                throw new InvalidArgumentTypeException(sprintf('The argument type for parameter $%s of method %s->%s() could not be detected.', $parameterName, static::class, $this->commandMethodName), 1306755296);
             }
             $defaultValue = (isset($parameterInfo['defaultValue']) ? $parameterInfo['defaultValue'] : null);
             $this->arguments->addNewArgument($parameterName, $dataType, ($parameterInfo['optional'] === false), $defaultValue);
index d3830d4..60c0027 100644 (file)
@@ -261,6 +261,6 @@ class Repository implements RepositoryInterface, \TYPO3\CMS\Core\SingletonInterf
      */
     protected function getRepositoryClassName()
     {
-        return get_class($this);
+        return static::class;
     }
 }
index 3ef22d5..42a17d6 100644 (file)
@@ -378,7 +378,7 @@ class PropertyMappingConfiguration implements PropertyMappingConfigurationInterf
 
         $currentProperty = array_shift($splittedPropertyPath);
         if (!isset($this->subConfigurationForProperty[$currentProperty])) {
-            $type = get_class($this);
+            $type = static::class;
             if (isset($this->subConfigurationForProperty[self::PROPERTY_PATH_PLACEHOLDER])) {
                 $this->subConfigurationForProperty[$currentProperty] = clone $this->subConfigurationForProperty[self::PROPERTY_PATH_PLACEHOLDER];
             } else {
index 3c1b93a..830700e 100644 (file)
@@ -46,7 +46,7 @@ class ReflectionServiceTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa
     public function getClassTagsValues()
     {
         $service = new ReflectionService();
-        $classValues = $service->getClassTagsValues(get_class($this));
+        $classValues = $service->getClassTagsValues(static::class);
         $this->assertEquals([
             'firsttest' => ['test for reflection'],
             'anothertest' => ['second test for reflection', 'second test for reflection with second value']
@@ -59,7 +59,7 @@ class ReflectionServiceTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa
     public function getClassTagValues()
     {
         $service = new ReflectionService();
-        $classValues = $service->getClassTagValues(get_class($this), 'firsttest');
+        $classValues = $service->getClassTagValues(static::class, 'firsttest');
         $this->assertEquals([
             'test for reflection',
         ], $classValues);
@@ -71,8 +71,8 @@ class ReflectionServiceTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa
     public function hasMethod()
     {
         $service = new ReflectionService();
-        $this->assertTrue($service->hasMethod(get_class($this), 'fixtureMethodForMethodTagsValues'));
-        $this->assertFalse($service->hasMethod(get_class($this), 'notExistentMethod'));
+        $this->assertTrue($service->hasMethod(static::class, 'fixtureMethodForMethodTagsValues'));
+        $this->assertFalse($service->hasMethod(static::class, 'notExistentMethod'));
     }
 
     /**
@@ -81,7 +81,7 @@ class ReflectionServiceTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa
     public function getMethodTagsValues()
     {
         $service = new ReflectionService();
-        $tagsValues = $service->getMethodTagsValues(get_class($this), 'fixtureMethodForMethodTagsValues');
+        $tagsValues = $service->getMethodTagsValues(static::class, 'fixtureMethodForMethodTagsValues');
         $this->assertEquals([
             'param' => ['array $foo The foo parameter'],
             'return' => ['string']
@@ -94,7 +94,7 @@ class ReflectionServiceTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa
     public function getMethodParameters()
     {
         $service = new ReflectionService();
-        $parameters = $service->getMethodParameters(get_class($this), 'fixtureMethodForMethodTagsValues');
+        $parameters = $service->getMethodParameters(static::class, 'fixtureMethodForMethodTagsValues');
         $this->assertSame([
             'foo' => [
                 'position' => 0,
@@ -114,7 +114,7 @@ class ReflectionServiceTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa
     public function getMethodParametersWithShortTypeNames()
     {
         $service = new ReflectionService();
-        $parameters = $service->getMethodParameters(get_class($this), 'fixtureMethodForMethodTagsValuesWithShortTypes');
+        $parameters = $service->getMethodParameters(static::class, 'fixtureMethodForMethodTagsValuesWithShortTypes');
         $this->assertSame([
             'dummy' => [
                 'position' => 0,
index 988fd91..05976c3 100644 (file)
@@ -121,7 +121,7 @@ class ExtensionListUtility implements \SplObserver
             $this->parser->attach($this);
         } else {
             throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException(
-                get_class($this) . ': No XML parser available.',
+                static::class . ': No XML parser available.',
                 1476108717
             );
         }
index 20a4138..d13bf43 100644 (file)
@@ -47,7 +47,7 @@ class MirrorListUtility implements \SplObserver
             $this->parser->attach($this);
         } else {
             throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException(
-                get_class($this) . ': No XML parser available.',
+                static::class . ': No XML parser available.',
                 1476108687
             );
         }
index 64d0403..fcc976d 100644 (file)
@@ -92,8 +92,8 @@ abstract class AbstractTagBasedViewHelper extends AbstractViewHelper
             }
         }
 
-        if (isset(self::$tagAttributes[get_class($this)])) {
-            foreach (self::$tagAttributes[get_class($this)] as $attributeName) {
+        if (isset(self::$tagAttributes[static::class])) {
+            foreach (self::$tagAttributes[static::class] as $attributeName) {
                 if ($this->hasArgument($attributeName) && $this->arguments[$attributeName] !== '') {
                     $this->tag->addAttribute($attributeName, $this->arguments[$attributeName]);
                 }
@@ -114,7 +114,7 @@ abstract class AbstractTagBasedViewHelper extends AbstractViewHelper
     protected function registerTagAttribute($name, $type, $description, $required = false, $default = null)
     {
         $this->registerArgument($name, $type, $description, $required, $default);
-        self::$tagAttributes[get_class($this)][$name] = $name;
+        self::$tagAttributes[static::class][$name] = $name;
     }
 
     /**
index 3dba9f8..ca5b1ce 100644 (file)
@@ -111,11 +111,11 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
      */
     protected function registerRenderMethodArguments()
     {
-        GeneralUtility::deprecationLog(sprintf('Render method argument support is deprecated (used on class "%s"), switch to initializeArguments and registerArgument.', get_class($this)));
+        GeneralUtility::deprecationLog(sprintf('Render method argument support is deprecated (used on class "%s"), switch to initializeArguments and registerArgument.', static::class));
 
         $reflectionService = $this->getReflectionService();
-        $methodParameters = $reflectionService->getMethodParameters(get_class($this), 'render');
-        $methodTags = $reflectionService->getMethodTagsValues(get_class($this), 'render');
+        $methodParameters = $reflectionService->getMethodParameters(static::class, 'render');
+        $methodTags = $reflectionService->getMethodTagsValues(static::class, 'render');
 
         $paramAnnotations = [];
         if (isset($methodTags['param'])) {
@@ -128,7 +128,7 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
             if (isset($parameterInfo['type'])) {
                 $dataType = isset($parameterInfo['array']) && (bool)$parameterInfo['array'] ? 'array' : $parameterInfo['type'];
             } else {
-                throw new \TYPO3\CMS\Fluid\Core\Exception('Could not determine type of argument "' . $parameterName . '" of the render-method in ViewHelper "' . get_class($this) . '". Either the methods docComment is invalid or some PHP optimizer strips off comments.', 1242292003);
+                throw new \TYPO3\CMS\Fluid\Core\Exception('Could not determine type of argument "' . $parameterName . '" of the render-method in ViewHelper "' . static::class . '". Either the methods docComment is invalid or some PHP optimizer strips off comments.', 1242292003);
             }
 
             $description = '';
index d5db37a..65c27a9 100644 (file)
@@ -130,7 +130,7 @@ abstract class AbstractWidgetViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper
         $this->widgetContext->setParentPluginName($pluginName);
         $pluginNamespace = $this->extensionService->getPluginNamespace($extensionName, $pluginName);
         $this->widgetContext->setParentPluginNamespace($pluginNamespace);
-        $this->widgetContext->setWidgetViewHelperClassName(get_class($this));
+        $this->widgetContext->setWidgetViewHelperClassName(static::class);
         if ($this->ajaxWidget === true) {
             $this->ajaxWidgetContextHolder->store($this->widgetContext);
         }
@@ -177,7 +177,7 @@ abstract class AbstractWidgetViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper
                 'initiateSubRequest() can not be called if there is no valid controller extending ' .
                 'TYPO3\\CMS\\Fluid\\Core\\Widget\\AbstractWidgetController' .
                 ' Got "' . ($this->controller ? get_class($this->controller) : gettype($this->controller)) .
-                '" in class "' . get_class($this) . '".',
+                '" in class "' . static::class . '".',
                 1289422564
             );
         }
index 878a60e..4410cae 100644 (file)
@@ -192,7 +192,7 @@ class PaginateController extends AbstractWidgetController
             return $modifiedObjects;
         }
         throw new \InvalidArgumentException(
-                'The view helper "' . get_class($this)
+                'The view helper "' . static::class
                 . '" accepts as argument "QueryResultInterface", "\SplObjectStorage", "ObjectStorage" or an array. '
                 . 'given: ' . get_class($this->objects),
                 1385547291
index c14b600..864b143 100644 (file)
@@ -62,7 +62,7 @@ class ContentDataProcessorTest extends \TYPO3\TestingFramework\Core\Unit\UnitTes
         $contentObjectRendererStub = new ContentObjectRenderer();
         $config = [
             'dataProcessing.' => [
-                '10' => get_class($this)
+                '10' => static::class
             ]
         ];
         $variables = [];
index 142d9a9..f4270bf 100644 (file)
@@ -57,7 +57,7 @@ class MenuContentObjectFactoryTest extends \TYPO3\TestingFramework\Core\Unit\Uni
     public function getMenuObjectByTypeReturnsInstanceOfOwnRegisteredTypeInsteadOfInternalType()
     {
         $factory = new MenuContentObjectFactory;
-        $selfClassName = get_class($this);
+        $selfClassName = static::class;
         $factory->registerMenuType('GMENU', $selfClassName);
         $this->assertInstanceOf($selfClassName, $factory->getMenuObjectByType('GMENU'));
     }
@@ -68,7 +68,7 @@ class MenuContentObjectFactoryTest extends \TYPO3\TestingFramework\Core\Unit\Uni
     public function getMenuObjectByTypeReturnsInstanceOfNewRegisteredType()
     {
         $factory = new MenuContentObjectFactory;
-        $selfClassName = get_class($this);
+        $selfClassName = static::class;
         $uniqueMenuType = $this->getUniqueId('foo_');
         $factory->registerMenuType($uniqueMenuType, $selfClassName);
         $this->assertInstanceOf($selfClassName, $factory->getMenuObjectByType($uniqueMenuType));
index dfbe9f5..12889db 100644 (file)
@@ -579,7 +579,7 @@ class Check implements CheckInterface
      */
     protected function checkReflectionDocComment()
     {
-        $testReflection = new \ReflectionMethod(get_class($this), __FUNCTION__);
+        $testReflection = new \ReflectionMethod(static::class, __FUNCTION__);
         if ($testReflection->getDocComment() === false) {
             $this->messageQueue->enqueue(new FlashMessage(
                 'TYPO3 CMS core extensions like extbase and fluid heavily rely on method'
index 1cac4c4..8bcdb50 100644 (file)
@@ -162,7 +162,7 @@ abstract class AbstractUpdate
      */
     protected function markWizardAsDone($confValue = 1)
     {
-        GeneralUtility::makeInstance(Registry::class)->set('installUpdate', get_class($this), $confValue);
+        GeneralUtility::makeInstance(Registry::class)->set('installUpdate', static::class, $confValue);
     }
 
     /**
@@ -172,7 +172,7 @@ abstract class AbstractUpdate
      */
     protected function isWizardDone()
     {
-        $wizardClassName = get_class($this);
+        $wizardClassName = static::class;
         return GeneralUtility::makeInstance(Registry::class)->get('installUpdate', $wizardClassName, false);
     }
 }
index 3fc1bb7..7a6fa94 100644 (file)
@@ -145,7 +145,7 @@ abstract class AbstractTask
      */
     public function getTaskTitle()
     {
-        return $GLOBALS['LANG']->sL($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][get_class($this)]['title']);
+        return $GLOBALS['LANG']->sL($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][static::class]['title']);
     }
 
     /**
@@ -155,7 +155,7 @@ abstract class AbstractTask
      */
     public function getTaskDescription()
     {
-        return $GLOBALS['LANG']->sL($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][get_class($this)]['description']);
+        return $GLOBALS['LANG']->sL($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][static::class]['description']);
     }
 
     /**
@@ -165,7 +165,7 @@ abstract class AbstractTask
      */
     public function getTaskClassName()
     {
-        return get_class($this);
+        return static::class;
     }
 
     /**
@@ -490,7 +490,7 @@ abstract class AbstractTask
             }
             if ($failure instanceof \Exception) {
                 // Log failed execution
-                $logMessage = 'Task failed to execute successfully. Class: ' . get_class($this)
+                $logMessage = 'Task failed to execute successfully. Class: ' . static::class
                     . ', UID: ' . $this->taskUid . ', Code: ' . $failure->getCode() . ', ' . $failure->getMessage();
                 $this->scheduler->log($logMessage, 1);
                 // Do not serialize the complete exception or the trace, this can lead to huge strings > 50MB
@@ -608,6 +608,6 @@ abstract class AbstractTask
     protected function getLogger()
     {
         $logManager = GeneralUtility::makeInstance(LogManager::class);
-        return $logManager->getLogger(get_class($this));
+        return $logManager->getLogger(static::class);
     }
 }