/Laravel-PHP-CS-Fixer

Artisan Command for FriendsOfPHP/PHP-CS_Fixer

Primary LanguagePHPMIT LicenseMIT

Laravel PHP CS Fixer

The PHP CS Fixer is maintained on GitHub at https://github.com/FriendsOfPHP/PHP-CS-Fixer bug reports and ideas about new features are welcome there.

The PHP Coding Standards Fixer (PHP CS Fixer) tool fixes your code to follow standards; whether you want to follow PHP coding standards as defined in the PSR-1, PSR-2, etc., or other community driven ones like the Symfony one. You can also define your (teams) style through configuration.

This package makes it easier than ever to use PHP CS Fixer to maintain your laravel code by providing access to it via tools that you are already familiar with. An artisan command to fix the code, and manage the configuration the way you do all the other laravel packages you use.

Features of this package

  • Run PHP-CS-Fixer commands via Laravel Artisan CLI.
  • Laravel Code Style Configuration Used by Default.
  • No need to learn a new tool.

Versions and compatibility

Note: This documentation was written for Laravel 5.5.

  • PHP Version: ">=7.0 <7.3"
  • Laravel/Lumen: "5.4.x|5.5.x"
  • PHP-CS-Fixer: "2.9.*"

Installation

composer require stechstudio/laravel-php-cs-fixer

Register the Provider:

For Lumen services, add:

$app->register(STS\Fixer\FixerServiceProvider::class);

to bootstrap/app.php. For Laravel applications, add:

STS\Fixer\FixerServiceProvider::class,

to the providers array in config/app.php.

Configuration

The default rule configuration is in the fixer.php and is intended to match the rules used by the Laravel Framework.

return [
    'rules' => [
        'psr0' => false,
        '@PSR2' => true,
        'blank_line_after_namespace' => true,
        'braces' => true,
        'class_definition' => true,
        'elseif' => true,
        'function_declaration' => true,
        'indentation_type' => true,
        'line_ending' => true,
        'lowercase_constants' => true,
        'lowercase_keywords' => true,
        'method_argument_space' => [
            'ensure_fully_multiline' => true, ],
        'no_break_comment' => true,
        'no_closing_tag' => true,
        'no_spaces_after_function_name' => true,
        'no_spaces_inside_parenthesis' => true,
        'no_trailing_whitespace' => true,
        'no_trailing_whitespace_in_comment' => true,
        'single_blank_line_at_eof' => true,
        'single_class_element_per_statement' => [
            'elements' => ['property'],
        ],
        'single_import_per_statement' => true,
        'single_line_after_imports' => true,
        'switch_case_semicolon_to_colon' => true,
        'switch_case_space' => true,
        'visibility_required' => true,
        'encoding' => true,
        'full_opening_tag' => true,
        ],
];

if you want to modify this yourself, just use artisan artisan vendor:publish --provider="STS\Fixer\FixerServiceProvider" and it will put the default configuration in 'config/fixer.php'. Check the
PHP-CS-Fixer/README for valid rules.

Note: There are some static configuration settings in the finder that have yet to be moved to the configuration file that you should be aware of! We plan to move these to the config file soon.

$finder = Finder::create()
            ->notPath('bootstrap/cache')
            ->notPath('storage')
            ->notPath('vendor')
            ->in(base_path())
            ->name('*.php')
            ->notName('*.blade.php')
            ->ignoreDotFiles(true)
            ->ignoreVCS(true);

Usage

Fix Your Code

Fix your code with Laravel Coding Standards.

Syntax:

$ php artisan fixer:fix [options]

Example:

Usage:
  fixer:fix [options]

Options:
      --path[=PATH]                    The path. (multiple values allowed)
      --path-mode[=PATH-MODE]          Specify path mode (can be override or intersection). [default: "override"]
      --allow-risky[=ALLOW-RISKY]      Are risky fixers allowed (can be yes or no).
      --config[=CONFIG]                The path to a .php_cs file.
      --dry-run                        Only shows which files would have been modified.
      --rules[=RULES]                  The Rules
      --using-cache[=USING-CACHE]      Does cache should be used (can be yes or no). [default: "yes"]
      --cache-file[=CACHE-FILE]        The path to the cache file.
      --diff                           Also produce diff for each file.
      --diff-format[=DIFF-FORMAT]      Specify diff format.
      --format[=FORMAT]                To output results in other formats.
      --stop-on-violation              Stop execution on first violation.
      --show-progress[=SHOW-PROGRESS]  Type of progress indicator (none, run-in, estimating or estimating-max).
  -h, --help                           Display this help message
  -q, --quiet                          Do not output any message
  -V, --version                        Display this application version
      --ansi                           Force ANSI output
      --no-ansi                        Disable ANSI output
  -n, --no-interaction                 Do not ask any interactive question
      --env[=ENV]                      The environment the command should run under
  -v|vv|vvv, --verbose                 Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
  
// Only shows which files would have been modified
$ php artisan fixer:fix --dry-run

// Modify the files that need to be fixed
$ php artisan fixer:fix

// Check all the files in the `app` directory
$ php artisan fixer:fix --path app --dry-run