php-forge/coding-standard

Coding standards for PHP projects.

Installs: 643

Dependents: 9

Suggesters: 0

Security: 0

Stars: 1

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/php-forge/coding-standard

0.1.0 2026-01-24 17:29 UTC

This package is auto-updated.

Last update: 2026-01-24 18:12:32 UTC


README

PHP Forge

Coding standard


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

Features

Feature Overview

Installation

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

Quick start

This package provides shared configuration files under vendor/php-forge/coding-standard/config/:

  • config/ecs.php (shared ECS rules, no paths)
  • config/rector.php (shared Rector rules, no paths)

Consumer repositories should create wrapper config files at the repository root. Wrappers define the paths for that repository and import the shared configuration.

Generic repository

ECS (ecs.php)

Create ecs.php in your repository root:

<?php

declare(strict_types=1);

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

return $ecsConfigBuilder->withPaths(
    [
        __DIR__ . '/src',
        __DIR__ . '/tests',
    ],
);

To override or skip rules locally, apply changes after requiring the shared config:

<?php

declare(strict_types=1);

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

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

Rector (rector.php)

Create rector.php in your repository root:

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;

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

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

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

Yii2 repositories

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

Example (Rector):

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;

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

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

Composer scripts

Follow the same convention used across PHP Forge repositories:

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

Documentation

Package information

PHP Latest Stable Version Total Downloads

Quality code

Super-Linter StyleCI

Our social networks

Follow on X

License

License