Search by

php-forge / coding-standard

terabytesoftw

Centralized ECS and Rector configurations for PHP projects.

Package info

github.com/php-forge/coding-standard

pkg:composer/php-forge/coding-standard

Statistics

Installs: 116 718

Dependents: 48

Suggesters: 0

Stars: 2

Open Issues: 0

0.3.5 2026-11-13 00:00 UTC

This package is auto-updated.

Last update: 2026-11-13 00:03:06 UTC


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
src/ecs-82.php Base + @PHP82Migration
src/ecs-83.php Base + @PHP82Migration (no additional 8.3 rules)
src/ecs-84.php Base + @PHP84Migration
src/rector.php Shared Rector base rules, no PHP level set
src/rector-81.php Base + LevelSetList::UP_TO_PHP_81
src/rector-82.php Base + LevelSetList::UP_TO_PHP_82
src/rector-83.php Base + LevelSetList::UP_TO_PHP_83
src/rector-84.php Base + LevelSetList::UP_TO_PHP_84

Pick the version that matches the minimum PHP your project supports; Rector applies migrations up to that level and ECS applies the corresponding non-risky migration rules. These tools do not prove minimum-version compatibility. 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"
  }
}

AI assistance

AI agents can use the documentation index to discover ecosystem pages and fetch a page's Markdown version by appending index.md to its URL. The local AI assistance guide covers skill installation, client setup and verification.

Match guidance to the installed package revision. If hosted documentation is unavailable or does not match, use this README, the skill source, the source configuration and the changelog.

Package information

PHP Latest Stable Version Total Downloads

Project status

Quality StyleCI

Security

OpenSSF Scorecard Zizmor

Built with AI

Built with Claude Code Built with Codex Reviewed by CodeRabbit

Our social networks

Follow on X

License

License