Skip to content

Coding Standard rules for PHP projects with focus on Clean Architecture

License

mdk999/coding-standard

 
 

Repository files navigation

Coding Standard

Downloads

Set of rules for PHP_CodeSniffer and PHP-CS-Fixer used by Symplify projects.

They run best with EasyCodingStandard.


Install

composer require symplify/coding-standard --dev composer require symplify/easy-coding-standard --dev
  1. Run with ECS:
# ecs.php use Symplify\EasyCodingStandard\Config\ECSConfig; +use Symplify\EasyCodingStandard\ValueObject\Set\SetList; return static function (ECSConfig $ecsConfig): void { + $ecsConfig->sets([SetList::SYMPLIFY]);

12 Rules Overview

ArrayListItemNewlineFixer

Indexed PHP array item has to have one line per item

-$value = ['simple' => 1, 'easy' => 2]; +$value = ['simple' => 1, +'easy' => 2];

ArrayOpenerAndCloserNewlineFixer

Indexed PHP array opener [ and closer ] must be on own line

-$items = [1 => 'Hey']; +$items = [ +1 => 'Hey' +];

BlankLineAfterStrictTypesFixer

Strict type declaration has to be followed by empty line

 declare(strict_types=1); + namespace App;

LineLengthFixer

Array items, method parameters, method call arguments, new arguments should be on same/standalone line to fit line length.

🔧 configure it!

-function some($veryLong, $superLong, $oneMoreTime) -{ +function some( + $veryLong, + $superLong, + $oneMoreTime +) { } -function another( - $short, - $now -) { +function another($short, $now) { }

MethodChainingNewlineFixer

Each chain method call must be on own line

-$someClass->firstCall()->secondCall(); +$someClass->firstCall() +->secondCall();

ParamReturnAndVarTagMalformsFixer

Fixes @param, @return, @var and inline @var annotations broken formats

 /** - * @param string + * @param string $name */ function getPerson($name) { }

RemovePHPStormAnnotationFixer

Remove "Created by PhpStorm" annotations

-/** - * Created by PhpStorm. - * User: ... - * Date: 17/10/17 - * Time: 8:50 AM - */ class SomeClass { }

RemoveUselessDefaultCommentFixer

Remove useless PHPStorm-generated @todo comments, redundant "Class XY" or "gets service" comments etc.

-/** - * class SomeClass - */ class SomeClass { - /** - * SomeClass Constructor. - */ public function __construct() { - // TODO: Change the autogenerated stub - // TODO: Implement whatever() method. } }

SpaceAfterCommaHereNowDocFixer

Add space after nowdoc and heredoc keyword, to prevent bugs on PHP 7.2 and lower, see https://laravel-news.com/flexible-heredoc-and-nowdoc-coming-to-php-7-3

 $values = [ <<<RECTIFY Some content -RECTIFY, +RECTIFY +, 1000 ];

StandaloneLineConstructorParamFixer

Constructor param should be on a standalone line to ease git diffs on new dependency

 final class PromotedProperties { - public function __construct(int $age, string $name) - { + public function __construct( + int $age, + string $name + ) { } }

StandaloneLineInMultilineArrayFixer

Indexed arrays must have 1 item per line

-$friends = [1 => 'Peter', 2 => 'Paul']; +$friends = [ + 1 => 'Peter', + 2 => 'Paul' +];

StandaloneLinePromotedPropertyFixer

Promoted property should be on standalone line

 final class PromotedProperties { - public function __construct(public int $age, private string $name) - { + public function __construct( + public int $age, + private string $name + ) { } }

About

Coding Standard rules for PHP projects with focus on Clean Architecture

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%