Product Decisions This Supports
- Build vs. buy for engineering standards. This package is the "build" side of the classic decision: maintain a house ruleset as a versioned Composer dependency versus configuring Laravel Pint, PHP-CS-Fixer, or PHP_CodeSniffer per repository. The PM decision is whether a shared, centrally versioned standard is worth an owner and a release cadence, or whether the zero-config first-party options are "good enough."
- Platform/tooling roadmap. Coding standards are a platform investment, not a feature. This sits on the same roadmap line as CI quality gates, pre-commit hooks, distributed IDE configs, and PHP version upgrade programs — because a ruleset has to be revised every time the runtime moves (PHP 8.x upgrades, Symfony major versions).
- Cross-framework consolidation. Because it targets PHP and Symfony, it can serve as a single standard across Symfony services and Laravel applications, since Laravel builds on Symfony components. That makes it a candidate for org-wide standardization after a team merge, an acquisition, or a move to a monorepo.
- Onboarding and review economics. A shared standard converts subjective style debate into an automated check. That supports measurable goals like reducing review cycle time, shrinking PR comment volume on formatting, and shortening time-to-first-merged-PR for new engineers.
- Legacy modernization sequencing. A pinned standard enables incremental adoption — baseline/suppression files on legacy code, strict enforcement on new code — which is a common PM sequencing decision when a full reformat is too risky to land at once.
- Definition of Done. It gives the "code quality" line item in a team's DoD something concrete and testable in CI rather than a prose convention in a wiki.
When to Consider This Package
Consider it when:
- You operate multiple PHP repositories or multiple teams and styles have visibly drifted; the coordination cost of per-repo configs now exceeds the cost of one shared dependency.
- Your estate is mixed Symfony and Laravel and you want one rule set rather than two parallel conventions.
- You have (or will fund) an owner in a developer-tools or platform group who can cut releases, track PHP/Symfony version support, and respond to false positives.
- You need pinned, reproducible enforcement in CI across repos, which ad hoc local configs do not reliably provide.
- You are standardizing after a merger, acquisition, or reorg and need a neutral, tool-enforced baseline.
- You want incremental rollout on a large legacy codebase where a one-shot reformat would be unacceptable.
Look elsewhere when:
- You run a single Laravel application. Laravel Pint is first-party, zero-config, and has far broader community validation; a bespoke ruleset adds maintenance for marginal benefit.
- Your actual problem is type safety or defect detection, not formatting. That is PHPStan, Psalm, or Larastan territory — a coding standard will not find null dereferences.
- You need security scanning, dependency auditing, or performance analysis. Different tool class entirely.
- You require external support, an SLA, or vendor accountability. With zero stars, zero dependents, and a private host, there is no ecosystem signal, no third-party bug reports, and no community fallback. Treat it as an internal asset with a bus factor of roughly one until proven otherwise.
- You need Laravel-specific rules (Blade templates, Eloquent conventions, queued-job patterns). This package's PHP/Symfony framing likely does not cover them.
- Your teams cannot absorb a reformatting diff in the near term, or the org cannot commit to upgrading the ruleset alongside PHP versions.
Adoption criteria worth gating on: a named maintainer, a documented release/versioning policy, a green run on two representative repos (one Laravel, one Symfony), acceptable CI wall-clock impact, and a rollback path if the standard proves noisy.
How to Pitch It (Stakeholders)
For executives: This is low-cost engineering hygiene, not a product bet. It gives every PHP and Symfony codebase in the org the same enforced style, which shortens onboarding for new engineers, reduces time spent on formatting in code review, and makes codebases from different teams and acquisitions look and behave consistently. The cost is one small dependency plus a modest ongoing ownership commitment. The honest caveats: it is an internal, unproven package with no external adoption, so it needs a named owner and a version upgrade cadence tied to PHP releases. Recommend a two-repository pilot with success criteria — review cycle time, formatting-related PR comments, and CI runtime — before any org-wide mandate.
For engineering: One composer require --dev replaces hand-maintained PHP-CS-Fixer/PHP_CodeSniffer configs with a versioned, pinnable standard that runs identically in CI and in the IDE. It is designed for PHP and Symfony, so it fits both Symfony services and Laravel apps. Adoption is incremental: baseline existing violations, enforce strictly on new and touched code, and expand coverage over time. Two conditions are non-negotiable — someone owns releases and false-positive triage, and the ruleset is upgraded in lockstep with PHP and Symfony versions. If you are a single Laravel app, use Pint instead; if the goal is catching bugs rather than formatting, pair this with PHPStan or Larastan rather than replacing them.