From 20952b77101cfbb5aa4f01bf3c3a72e138b6b362 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Thu, 6 Apr 2017 08:56:46 +0200 Subject: [PATCH] TASK: Refactor options access * No longer use trait but static methods due to lack of Dependency Injection. * Adjust all calls. * Also don't use yield any longer but return array of file names. Relates: #42 --- .../AbstractClassnameChecker.php | 3 -- .../Sniffs/LegacyClassnames/Mapping.php | 8 ++-- .../MissingNamespaceSniff.php | 3 +- ...MissingVendorForPluginsAndModulesSniff.php | 6 +-- .../{OptionsAccessTrait.php => Options.php} | 38 +++++++++++-------- .../Sniffs/Removed/AbstractGenericUsage.php | 6 +-- .../Removed/GenericConstantUsageSniff.php | 3 +- .../Removed/GenericFunctionCallSniff.php | 3 +- 8 files changed, 35 insertions(+), 35 deletions(-) rename src/Standards/Typo3Update/Sniffs/{OptionsAccessTrait.php => Options.php} (72%) diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/AbstractClassnameChecker.php b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/AbstractClassnameChecker.php index a13fe15..bd472cc 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/AbstractClassnameChecker.php +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/AbstractClassnameChecker.php @@ -24,15 +24,12 @@ use PHP_CodeSniffer as PhpCs; use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; use Typo3Update\Sniffs\LegacyClassnames\Mapping; -use Typo3Update\Sniffs\OptionsAccessTrait; /** * Provide common uses for all sniffs, regarding class name checks. */ abstract class AbstractClassnameChecker implements PhpCsSniff { - use OptionsAccessTrait; - /** * A list of extension names that might contain legacy class names. * Used to check clas names for warnings. diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/Mapping.php b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/Mapping.php index 16a8acf..201263a 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/Mapping.php +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/Mapping.php @@ -20,7 +20,7 @@ namespace Typo3Update\Sniffs\LegacyClassnames; * 02110-1301, USA. */ -use Typo3Update\Sniffs\OptionsAccessTrait; +use Typo3Update\Sniffs\Options; /** * Singleton wrapper for mappings. @@ -30,8 +30,6 @@ use Typo3Update\Sniffs\OptionsAccessTrait; */ final class Mapping { - use OptionsAccessTrait; - // Singleton implementation - Start static protected $instance = null; /** @@ -55,7 +53,7 @@ final class Mapping } private function __construct() { - $this->mappings = require $this->getMappingFile(); + $this->mappings = require Options::getMappingFile(); } // Singleton implementation - End @@ -116,7 +114,7 @@ final class Mapping } file_put_contents( - $this->getMappingFile(), + Options::getMappingFile(), 'mappings, true) . ';' ); } diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff.php b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff.php index 3f8a197..e8d0feb 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff.php @@ -21,6 +21,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Options; /** * Detect missing namespaces for class definitions. @@ -153,7 +154,7 @@ class Typo3Update_Sniffs_LegacyClassnames_MissingNamespaceSniff extends Abstract */ protected function getNamespace($classname) { - $vendor = trim($this->getVendor(), '\\/'); + $vendor = trim(Options::getVendor(), '\\/'); $classnameParts = explode('_', $classname); unset($classnameParts[0]); // Remove Tx_ diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff.php b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff.php index 3f2825f..1886995 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff.php +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff.php @@ -22,6 +22,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; use PHP_CodeSniffer_Tokens as Tokens; +use Typo3Update\Sniffs\Options; /** * Detect whether vendor is missing for plugins and modules registrations and configurations. @@ -29,7 +30,6 @@ use PHP_CodeSniffer_Tokens as Tokens; class Typo3Update_Sniffs_LegacyClassnames_MissingVendorForPluginsAndModulesSniff implements PhpCsSniff { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; - use \Typo3Update\Sniffs\OptionsAccessTrait; /** * Returns the token types that this sniff is interested in. @@ -72,13 +72,13 @@ class Typo3Update_Sniffs_LegacyClassnames_MissingVendorForPluginsAndModulesSniff . ' Add vendor before Extensionkey like: "%s." . $_EXTKEY', $firstArgument, 'missingVendor', - [$this->getVendor()] + [Options::getVendor()] ); if ($fix === true) { $phpcsFile->fixer->replaceToken( $firstArgument, - "'{$this->getVendor()}.' . {$tokens[$firstArgument]['content']}" + "'{Options::getVendor()}.' . {$tokens[$firstArgument]['content']}" ); } } diff --git a/src/Standards/Typo3Update/Sniffs/OptionsAccessTrait.php b/src/Standards/Typo3Update/Sniffs/Options.php similarity index 72% rename from src/Standards/Typo3Update/Sniffs/OptionsAccessTrait.php rename to src/Standards/Typo3Update/Sniffs/Options.php index fe2f3f6..c6b5ba7 100644 --- a/src/Standards/Typo3Update/Sniffs/OptionsAccessTrait.php +++ b/src/Standards/Typo3Update/Sniffs/Options.php @@ -25,16 +25,16 @@ use PHP_CodeSniffer as PhpCs; /** * Wrapper to retrieve options from PhpCs with defaults. */ -trait OptionsAccessTrait +class Options { /** * Returns the configured vendor, e.g. to generate new namespaces. * * @return string */ - public function getVendor() + public static function getVendor() { - $vendor = $this->getOptionWithDefault( + $vendor = static::getOptionWithDefault( 'vendor', 'YourCompany' ); @@ -47,9 +47,9 @@ trait OptionsAccessTrait * * @return string */ - public function getMappingFile() + public static function getMappingFile() { - return (string) $this->getOptionWithDefault( + return (string) static::getOptionWithDefault( 'mappingFile', __DIR__ . '/../../../../LegacyClassnames.php' ); @@ -58,11 +58,11 @@ trait OptionsAccessTrait /** * Returns an array of absolute file names containing removed function configurations. * - * @return \Generator + * @return array */ - public function getRemovedFunctionConfigFiles() + public static function getRemovedFunctionConfigFiles() { - $this->getOptionFileNames( + return static::getOptionFileNames( 'removedFunctionConfigFiles', __DIR__ . '/../Configuration/Removed/Functions/*.yaml' ); @@ -71,11 +71,11 @@ trait OptionsAccessTrait /** * Returns an array of absolute file names containing removed constant configurations. * - * @return \Generator + * @return array */ - public function getRemovedConstantConfigFiles() + public static function getRemovedConstantConfigFiles() { - $this->getOptionFileNames( + return static::getOptionFileNames( 'removedConstantConfigFiles', __DIR__ . '/../Configuration/Removed/Constants/*.yaml' ); @@ -89,7 +89,7 @@ trait OptionsAccessTrait * * @return mixed */ - private function getOptionWithDefault($optionName, $default) + private static function getOptionWithDefault($optionName, $default) { $option = PhpCs::getConfigData($optionName); if (!$option) { @@ -102,17 +102,23 @@ trait OptionsAccessTrait /** * Get file names defined by option using optionName, if not defined, use default. * + * TODO: Multiple files allowed, using glob ... + * to allow splitting per ext (extbase, fluid, ...) and TYPO3 Version 7.1, 7.0, ... + * * @param string $optionName * @param mixed $default * - * @return \Generator + * @return array */ - private function getOptionFileNames($optionName, $default) + protected static function getOptionFileNames($optionName, $default) { - $files = $this->getOptionWithDefault($optionName, $default); + $files = static::getOptionWithDefault($optionName, $default); + $fileNames = []; foreach ((new \GlobIterator($files)) as $file) { - yield (string) $file; + $fileNames[] = (string) $file; } + + return $fileNames; } } diff --git a/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php b/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php index b74e5e2..766db34 100644 --- a/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php +++ b/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php @@ -24,6 +24,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; use PHP_CodeSniffer_Tokens as Tokens; use Symfony\Component\Yaml\Yaml; +use Typo3Update\Sniffs\Options; /** * Contains common functionality for removed code like constants or functions. @@ -34,7 +35,6 @@ use Symfony\Component\Yaml\Yaml; abstract class AbstractGenericUsage implements PhpCsSniff { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; - use \Typo3Update\Sniffs\OptionsAccessTrait; /** * Configuration to define removed code. @@ -49,10 +49,6 @@ abstract class AbstractGenericUsage implements PhpCsSniff */ protected $removed = []; - /** - * TODO: Multiple files allowed, using glob ... - * to allow splitting per ext (extbase, fluid, ...) and TYPO3 Version 7.1, 7.0, ... - */ public function __construct() { if ($this->configured === []) { diff --git a/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php b/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php index c395398..e99a226 100644 --- a/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php @@ -21,6 +21,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\Removed\AbstractGenericUsage; +use Typo3Update\Sniffs\Options; /** * Sniff that handles all calls to removed constants. @@ -34,7 +35,7 @@ class Typo3Update_Sniffs_Removed_GenericConstantUsageSniff extends AbstractGener */ protected function getRemovedConfigFiles() { - return $this->getRemovedConstantConfigFiles(); + return Options::getRemovedConstantConfigFiles(); } /** diff --git a/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php b/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php index 29a957f..7f8b730 100644 --- a/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php @@ -22,6 +22,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Tokens as Tokens; use Typo3Update\Sniffs\Removed\AbstractGenericUsage; +use Typo3Update\Sniffs\Options; /** * Sniff that handles all calls to removed functions. @@ -35,7 +36,7 @@ class Typo3Update_Sniffs_Removed_GenericFunctionCallSniff extends AbstractGeneri */ protected function getRemovedConfigFiles() { - return $this->getRemovedFunctionConfigFiles(); + return Options::getRemovedFunctionConfigFiles(); } /**