| 
<?php
 declare(strict_types=1);
 
 $header = <<<'EOF'
 This file is part of Esi\PhpProjectTemplate.
 
 (c) Eric Sizemore <[email protected]>
 
 This source file is subject to the MIT license. For the full copyright and
 license information, please view the LICENSE file that was distributed with
 this source code.
 EOF;
 
 $config = new PhpCsFixer\Config();
 $config
 ->setRiskyAllowed(true)
 ->setRules([
 '@PER-CS'                 => true,
 '@PSR12'                  => true,
 '@PHP82Migration'         => true,
 'align_multiline_comment' => true,
 'array_syntax'            => ['syntax' => 'short'],
 'binary_operator_spaces'  => [
 'operators' => [
 '*=' => 'align_single_space_minimal',
 '+=' => 'align_single_space_minimal',
 '-=' => 'align_single_space_minimal',
 '/=' => 'align_single_space_minimal',
 '='  => 'align_single_space_minimal',
 '=>' => 'align_single_space_minimal',
 ],
 ],
 'declare_equal_normalize'      => ['space' => 'none'],
 'declare_parentheses'          => true,
 'declare_strict_types'         => true,
 'fully_qualified_strict_types' => true,
 'header_comment'               => ['comment_type' => 'PHPDoc', 'header' => $header, 'separate' => 'top'],
 'heredoc_to_nowdoc'            => true,
 //'global_namespace_import'                      => ['import_classes' => true, 'import_constants' => true, 'import_functions' => true],
 'native_function_invocation'                    => ['include' => ['@compiler_optimized'], 'scope' => 'namespaced', 'strict' => true],
 'native_constant_invocation'                    => ['fix_built_in' => false, 'include' => ['DIRECTORY_SEPARATOR', 'PHP_INT_SIZE', 'PHP_SAPI', 'PHP_VERSION_ID'], 'scope' => 'namespaced', 'strict' => true],
 'no_leading_import_slash'                       => true,
 'no_unneeded_import_alias'                      => true,
 'no_unused_imports'                             => true,
 'ordered_class_elements'                        => [
 'order' => [
 'use_trait',
 'case',
 'constant_public',
 'constant_protected',
 'constant_private',
 'property_public',
 'property_public_static',
 'property_protected',
 'property_protected_static',
 'property_private',
 'property_private_static',
 'construct',
 'destruct',
 'magic',
 'phpunit',
 'method_public',
 'method_public_static',
 'method_protected',
 'method_protected_static',
 'method_private',
 'method_private_static',
 ],
 'sort_algorithm' => 'alpha',
 ],
 'ordered_imports'    => ['imports_order' => ['class', 'function', 'const', ]],
 'ordered_interfaces' => [
 'direction' => 'ascend',
 'order'     => 'alpha',
 ],
 'ordered_traits'                                => true,
 'ordered_types'                                 => true,
 'phpdoc_align'                                  => true,
 'phpdoc_indent'                                 => true,
 'phpdoc_inline_tag_normalizer'                  => true,
 'phpdoc_no_access'                              => true,
 'phpdoc_no_alias_tag'                           => true,
 'phpdoc_no_empty_return'                        => true,
 'phpdoc_no_package'                             => true,
 'phpdoc_no_useless_inheritdoc'                  => true,
 'phpdoc_order'                                  => true,
 'phpdoc_param_order'                            => true,
 'phpdoc_return_self_reference'                  => true,
 'phpdoc_scalar'                                 => true,
 'phpdoc_separation'                             => true,
 'phpdoc_single_line_var_spacing'                => true,
 'phpdoc_summary'                                => true,
 'phpdoc_tag_casing'                             => true,
 'phpdoc_tag_type'                               => true,
 'phpdoc_to_comment'                             => false,
 'phpdoc_trim'                                   => true,
 'phpdoc_trim_consecutive_blank_line_separation' => true,
 'phpdoc_types_order'                            => true,
 'phpdoc_var_annotation_correct_order'           => true,
 'phpdoc_var_without_name'                       => true,
 'php_unit_internal_class'                       => ['types' => ['normal', 'final']],
 'php_unit_expectation'                          => true,
 'single_import_per_statement'     => true,
 'static_lambda'                   => true,
 'strict_param'                    => true,
 'use_arrow_functions'             => true,
 'whitespace_after_comma_in_array' => true,
 ])
 ->setLineEnding("\n")
 ->setFinder(
 PhpCsFixer\Finder::create()
 ->in(__DIR__ . '/src')
 ->in(__DIR__ . '/tests')
 )
 ;
 $config->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect());
 
 return $config;
 
 |