typo3/coding-standards
TYPO3's official coding standards, packaged plug-and-play for any Composer project. Bring TYPO3 Core's PHP-CS-Fixer rules and .editorconfig to your extension or project with one setup command, so every editor and teammate follows the same conventions.
.editorconfig, shipped as a dev-only Composer dependency with a scaffolding CLI (typo3-coding-standards setup / t3-cs s). Buying this costs one composer require --dev; building an equivalent means owning rule curation, PHP-CS-Fixer upgrades, and editor-config drift forever. For any team that has debated "whose style wins" for more than one sprint, this is a clear buy..php-cs-fixer.dist.php is designed to be committed and invoked from CI (the README points at the project's own GitHub Actions workflow as a template). That's a concrete, low-risk quality gate with a deterministic exit code, and an easy lever for "no style comments in code review."Adopt it when:
use, no trailing comma in single-line arrays, no space before ;, unused-use removal, concatenation spacing, no trailing whitespace on blank lines, no Yoda conditions) instead of hand-assembling rules..editorconfig across VS Code / PhpStorm / vim on a mixed-IDE team, and you want it generated rather than argued over.--target-dir (e.g. Build/), --rule-set=editorconfig|php-cs-fixer for partial adoption, and --force to reset. Partial adoption matters — it lets you pilot .editorconfig first and add the fixer later.Look elsewhere when:
friendsofphp/php-cs-fixer config on @PSR12 / @PER-CS. Adopting TYPO3's rule set here imports conventions that will fight your framework and your team, for no benefit.To executives: This is a near-zero-cost, near-zero-risk developer-productivity lever. It's a dev-only, MIT-licensed Composer package that writes two config files — a PHP formatter ruleset and a cross-IDE editor config — so every engineer formats code identically without meetings, and CI can enforce it automatically. There is no runtime dependency, no production footprint, and no lock-in: the files it generates are committed to our repo and remain ours if we ever drop the package, so the exit cost is essentially a git rm. Cost is roughly half a day of one engineer's time plus a few CI minutes per build. The one caveat to state up front: the value is concentrated in TYPO3 work, so this is a scoped bet on that part of the roadmap, not an org-wide standard — pure Laravel services should use Laravel Pint instead.
To engineering: Install with composer require --dev typo3/coding-standards, then run composer exec t3-cs s (or setup project / setup extension if auto-detection misfires) to generate .php-cs-fixer.dist.php and .editorconfig. Commit both — that's the recommended path and it's what makes the standard portable across machines and CI. Use --target-dir=Build --rule-set=php-cs-fixer if you want the config out of the repo root, and --rule-set=editorconfig for a low-friction pilot. Wire composer exec php-cs-fixer into CI as a blocking check; use the project's own GitHub Actions workflow as a reference implementation. Treat composer update typo3/coding-standards as a deliberate, reviewed change — the PHP-CS-Fixer ruleset applies immediately on update, while .editorconfig changes require an explicit manual update command which overwrites local edits, so commit before you run it. Pin the version, and expect to override a small number of rules to match our existing conventions rather than retrofitting the whole codebase in one PR — introducing this across a mature repo generates a large first-pass diff, so sequence it as a single dedicated "style-only" commit that reviewers can skip with git blame --ignore-rev, and add it to .git-blame-ignore-revs. Known gaps: no license-header rule by default, TYPO3-flavored rules that conflict with some Laravel idioms, and a maintainer cadence that is intentionally slow — don't expect fast upstream fixes, and budget for owning any customization locally.
How can I help you explore Laravel packages today?