php-forge/coding-standard

Centralized ECS and Rector configurations for PHP projects.

Maintainers

👁 terabytesoftw

Package info

github.com/php-forge/coding-standard

pkg:composer/php-forge/coding-standard

Statistics

Installs: 71 423

Dependents: 31

Suggesters: 0

Stars: 2

Open Issues: 1

0.3.2 2026-05-22 19:06 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

BSD-3-Clause c8187ba5b070de39fcb86df8e9e221d9a4fcf9b5

phpECScoding-standardrectorscaffold-provider


README

👁 PHP Forge

Coding standard


Centralized ECS and Rector configuration for PHP projects
Share one set of rules across multiple repositories via Composer.

System requirements

  • PHP 8.1 or higher.
  • Composer for dependency management.

Installation

composer require php-forge/coding-standard:^0.3 --dev

Or add the dependency manually to composer.json:

{
 "require-dev": {
 "php-forge/coding-standard": "^0.3"
 }
}

Then run composer update.

Configuration files

This package ships shared ECS and Rector configurations under vendor/php-forge/coding-standard/src/:

File Purpose
src/ecs.php Shared ECS base rules, no PHP migration set
src/ecs-81.php Base + @PHP81Migration PHP-CS-Fixer set
src/ecs-82.php Base + @PHP82Migration
src/ecs-83.php Base + @PHP83Migration
src/ecs-84.php Base + @PHP84Migration
src/rector.php Shared Rector base rules, no PHP level set
src/rector-81.php Base + SetList::PHP_81 + LevelSetList::UP_TO_PHP_81
src/rector-82.php Base + SetList::PHP_82 + LevelSetList::UP_TO_PHP_82
src/rector-83.php Base + SetList::PHP_83 + LevelSetList::UP_TO_PHP_83
src/rector-84.php Base + SetList::PHP_84 + LevelSetList::UP_TO_PHP_84

Pick the version that matches the minimum PHP your project supports; Rector upgrades code up to that level and PHP-CS-Fixer enforces matching syntax. The plain ecs.php / rector.php apply no PHP-version migrations.

ECS wrapper (ecs.php)

Create ecs.php in your repository root, requiring the version that matches the minimum PHP your project supports (ecs-83.php for PHP 8.3, etc.):

<?php

declare(strict_types=1);

/** @var \Symplify\EasyCodingStandard\Configuration\ECSConfigBuilder $ecsConfigBuilder */
$ecsConfigBuilder = require __DIR__ . '/vendor/php-forge/coding-standard/src/ecs-83.php';

return $ecsConfigBuilder
 ->withPaths(
 [
 __DIR__ . '/src',
 __DIR__ . '/tests',
 ],
 )
 ->withSkip(
 [
 // project-specific skips here.
 ],
 );

Rector wrapper (rector.php)

Create rector.php in your repository root, importing the version that matches your minimum PHP target:

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;

return static function (RectorConfig $rectorConfig): void {
 $rectorConfig->import(__DIR__ . '/vendor/php-forge/coding-standard/src/rector-83.php');

 $rectorConfig->paths(
 [
 __DIR__ . '/src',
 __DIR__ . '/tests',
 ],
 );

 // project-specific overrides can be added after the import.
 // $rectorConfig->skip([...]);
};

Yii2-specific rules

For framework-specific rules, keep them in a separate config file (or a separate package) and import it after the base configuration. Do not mix Yii2 rules into the generic base:

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;

return static function (RectorConfig $rectorConfig): void {
 $rectorConfig->import(__DIR__ . '/vendor/php-forge/coding-standard/src/rector.php');
 $rectorConfig->import(__DIR__ . '/rector-yii2.php');

 $rectorConfig->paths(
 [
 __DIR__ . '/src',
 __DIR__ . '/tests',
 ],
 );
};

Scaffolded distribution

This package is a yii2-extensions/scaffold provider for the root ecs.php and rector.php wrapper templates (sourced from src/config/ via scaffold.json). Consumers can opt in by allowing the plugin and listing this package as an authorised provider:

composer require yii2-extensions/scaffold:^0.1 --dev
{
 "config": {
 "allow-plugins": {
 "yii2-extensions/scaffold": true
 }
 },
 "extra": {
 "scaffold": {
 "auto": false,
 "allowed-packages": [
 "php-forge/coding-standard"
 ]
 }
 }
}

With auto: false, the plugin does not run on composer install; sync the wrappers manually:

vendor/bin/scaffold reapply --provider=php-forge/coding-standard

Both wrappers ship in mode preserve; written once on first install, never overwritten so consumer edits to paths or PHP target version survive subsequent runs.

Related packages

For dev environment scaffolding, see php-forge/baseline. The two packages are independent; adopt either, both, or neither.

Composer scripts

Follow the same convention used across PHP Forge repositories:

{
 "scripts": {
 "ecs": "./vendor/bin/ecs --fix",
 "rector": "./vendor/bin/rector process"
 }
}

Package information

👁 PHP
👁 Latest Stable Version
👁 Total Downloads

Quality code

👁 Super-Linter
👁 StyleCI

Our social networks

👁 Follow on X

License

👁 License