From 25e13beae5d41a043039de751a1946c137cd1ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20M=C3=BCller?= <2566282+brotkrueml@users.noreply.github.com> Date: Fri, 26 Jan 2024 15:32:53 +0000 Subject: [PATCH] [TASK] Use php-cs-fixer (#72) typo3/coding-standards is not compatible with Symfony 7 (necessary for TYPO3 v13), so we use php-cs-fixer directly instead of relying on another package. The rules for the php-cs-fixer are the same as for TYPO3 Core. Releases: main, 12.4 --- .php-cs-fixer.dist.php | 78 ++++++++++++++++++++++++++++++--- Classes/Service/BlogFactory.php | 5 +-- composer.json | 2 +- 3 files changed, 76 insertions(+), 9 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index edf33f1..da1b4b2 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -1,8 +1,76 @@ getFinder()->in(__DIR__) -; +declare(strict_types=1); -return $config; +use PhpCsFixer\Config; +use PhpCsFixer\Finder; + +return (new Config()) + ->setFinder( + (new Finder()) + ->in(__DIR__) + ) + ->setRiskyAllowed(true) + ->setRules([ + '@DoctrineAnnotation' => true, + // @todo: Switch to @PER-CS2.0 once php-cs-fixer's todo list is done: https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/7247 + '@PER-CS1.0' => true, + 'array_indentation' => true, + 'array_syntax' => ['syntax' => 'short'], + 'cast_spaces' => ['space' => 'none'], + // @todo: Can be dropped once we enable @PER-CS2.0 + 'concat_space' => ['spacing' => 'one'], + 'declare_equal_normalize' => ['space' => 'none'], + 'declare_parentheses' => true, + 'dir_constant' => true, + // @todo: Can be dropped once we enable @PER-CS2.0 + 'function_declaration' => [ + 'closure_fn_spacing' => 'none', + ], + 'function_to_constant' => ['functions' => ['get_called_class', 'get_class', 'get_class_this', 'php_sapi_name', 'phpversion', 'pi']], + 'type_declaration_spaces' => true, + 'global_namespace_import' => ['import_classes' => false, 'import_constants' => false, 'import_functions' => false], + 'list_syntax' => ['syntax' => 'short'], + // @todo: Can be dropped once we enable @PER-CS2.0 + 'method_argument_space' => true, + 'modernize_strpos' => true, + 'modernize_types_casting' => true, + 'native_function_casing' => true, + 'no_alias_functions' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_empty_phpdoc' => true, + 'no_empty_statement' => true, + 'no_extra_blank_lines' => true, + 'no_leading_namespace_whitespace' => true, + 'no_null_property_initialization' => true, + 'no_short_bool_cast' => true, + 'no_singleline_whitespace_before_semicolons' => true, + 'no_superfluous_elseif' => true, + 'no_trailing_comma_in_singleline' => true, + 'no_unneeded_control_parentheses' => true, + 'no_unused_imports' => true, + 'no_useless_nullsafe_operator' => true, + 'ordered_imports' => ['imports_order' => ['class', 'function', 'const'], 'sort_algorithm' => 'alpha'], + 'php_unit_construct' => ['assertions' => ['assertEquals', 'assertSame', 'assertNotEquals', 'assertNotSame']], + 'php_unit_mock_short_will_return' => true, + 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'], + 'phpdoc_no_access' => true, + 'phpdoc_no_empty_return' => true, + 'phpdoc_no_package' => true, + 'phpdoc_scalar' => true, + 'phpdoc_trim' => true, + 'phpdoc_types' => true, + 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'], + 'return_type_declaration' => ['space_before' => 'none'], + 'single_quote' => true, + 'single_space_around_construct' => true, + 'single_line_comment_style' => ['comment_types' => ['hash']], + // @todo: Can be dropped once we enable @PER-CS2.0 + 'single_line_empty_body' => true, + 'trailing_comma_in_multiline' => ['elements' => ['arrays']], + 'whitespace_after_comma_in_array' => ['ensure_single_space' => true], + 'yoda_style' => ['equal' => false, 'identical' => false, 'less_and_greater' => false], + + // We need this for documentation! + 'no_useless_else' => false, // We want to preserve else with comments only + ]); diff --git a/Classes/Service/BlogFactory.php b/Classes/Service/BlogFactory.php index 2226e76..f0b35d4 100644 --- a/Classes/Service/BlogFactory.php +++ b/Classes/Service/BlogFactory.php @@ -4,7 +4,6 @@ namespace T3docs\BlogExample\Service; -use DateTime; use T3docs\BlogExample\Domain\Model\Administrator; use T3docs\BlogExample\Domain\Model\Author; use T3docs\BlogExample\Domain\Model\Blog; @@ -65,14 +64,14 @@ public function createBlog(int $blogNumber = 1): Blog // create comments $comment = new Comment(); - $comment->setDate(new DateTime()); + $comment->setDate(new \DateTime()); $comment->setAuthor('Peter Pan'); $comment->setEmail('peter.pan@example.com'); $comment->setContent('Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.'); $post->addComment($comment); $comment = new Comment(); - $comment->setDate(new DateTime('2009-03-19 23:44')); + $comment->setDate(new \DateTime('2009-03-19 23:44')); $comment->setAuthor('John Smith'); $comment->setEmail('john@matrix.org'); $comment->setContent('Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.'); diff --git a/composer.json b/composer.json index ab4e245..70ec906 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ }, "require-dev": { "ergebnis/composer-normalize": "~2.39.0", - "typo3/coding-standards": "^0.7.1" + "friendsofphp/php-cs-fixer": "^3.48" }, "replace": { "friendsoftypo3/blog-example": "self.version"