Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Phpstan Typo3 Laravel Package

saschaegerer/phpstan-typo3

PHPStan extension for TYPO3 CMS that teaches static analysis about TYPO3 APIs, service container, Extbase, and framework classes. It adds TYPO3-specific rules and stubs to catch type errors and bugs earlier in extensions and projects.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Whether to adopt PHPStan as a quality gate for TYPO3 codebases. This package is the enabling dependency for that decision — without TYPO3-aware reflection, PHPStan produces false positives on dependency injection, GeneralUtility::makeInstance(), Extbase conventions, and XCLASS overrides, which is usually what kills a static-analysis rollout in a TYPO3 shop. So the real decision is "PHPStan + this extension" vs. "no static analysis," not "this package vs. nothing."
  • Upgrade and migration planning (v11 → v12 → v13). Framework-specific rules surface deprecated APIs, removed constants, and legacy patterns before an upgrade sprint starts. This converts an unbounded "how bad is our debt?" question into a scoped, ticketable worklist — directly feeds roadmap sizing and release-date commitments.
  • Build vs. buy for internal tooling. The alternative is writing and maintaining your own TYPO3 reflection stubs and rule set. At 51 stars and MIT licensing, this is a clear "buy" (i.e., adopt) for all but the largest agencies; a custom ruleset is a recurring maintenance tax with no product differentiation.
  • Third-party extension portfolio triage. Running the analyzer across vendor extensions gives a cheap, objective signal on which extensions are actively maintained vs. rotting, informing replace/extend/fork decisions in the dependency roadmap.
  • Definition-of-done and CI investment. Adding this to the pipeline is the concrete mechanism behind "no new tech debt" policies. It also justifies CI runtime budget and PR-blocking gates.
  • Onboarding and hiring. TYPO3's magic (DI, Extbase, Fluid, XCLASS) is a known ramp cost for generalist PHP hires. Framework-aware rules act as an always-on reviewer, reducing the senior-reviewer bottleneck — a people-cost argument, not just a code-quality one.
  • Where to spend the tech-debt budget. Rule-level findings let you rank remediation by frequency and severity instead of by opinion, which is what makes a debt-reduction proposal defensible to a CFO.

When to Consider This Package

Adopt when:

  • You are running, or have a funded plan to run, PHPStan on a TYPO3 CMS codebase (roughly v11+; confirm the supported matrix against your version).
  • Your team is a TYPO3 agency or in-house TYPO3 team with more than one active site/extension, where false positives would otherwise consume review time.
  • You want framework-specific rules, not just baseline PHP analysis — that is the differentiating value here.
  • You can pin versions in composer.json (dev dependency) and tolerate the PHPStan major-version cadence; PHPStan extensions are tightly coupled to the analyzer's AST/reflection API.
  • You accept single-maintainer, small-community risk and can mitigate it: version pinning, an internal fork (MIT permits it), or a maintainer relationship. Note the 51 stars / 0 dependents figures understate real usage — PHPStan extensions are require-dev and rarely appear in Packagist's dependency graph — but they are still not evidence of a large support ecosystem.

Look elsewhere or defer when:

  • The codebase is not TYPO3 (Neos, Laravel, Symfony, Drupal) — this is framework-specific and irrelevant.
  • The team standardizes on Psalm or PhpStorm inspections rather than PHPStan; there is no equivalent value here.
  • You need a vendor support contract or SLA; this is community OSS with no commercial backing.
  • The project is small or frozen — a handful of templates and one extension doesn't justify another CI stage and another dependency to upgrade.
  • You are on an unsupported/legacy TYPO3 version; verify before committing, since reflection stubs track framework internals.
  • You have no CI and no intention of building one — the package pays off only inside an automated feedback loop.

How to Pitch It (Stakeholders)

For executives (one paragraph): We can raise code quality and de-risk our next TYPO3 upgrade for effectively zero licence cost. This is a small, MIT-licensed add-on that makes our static-analysis tooling understand TYPO3 specifically, so it flags real framework-level problems instead of drowning reviewers in false alarms. It is a development-time dependency only — it does not ship to production and cannot affect runtime or customer-facing behaviour. Expected return is fewer upgrade-surprise defects and less senior-developer time spent on manual review. The main risk is that it is a small community project, which we contain by pinning versions, running a timeboxed pilot on one codebase, and retaining the option to fork it since the licence permits that.

For engineering leadership: This plugs the known gap that makes PHPStan impractical on TYPO3 — without it, DI, makeInstance, Extbase and XCLASS patterns generate noise. Adoption is composer require --dev, a phpstan.neon include, and a CI stage. Success is measurable: baseline error count, false-positive rate, and count of deprecated-API findings resolved per sprint. Plan for version lockstep with PHPStan majors and budget a small amount of maintenance time per upgrade cycle.

For the engineering team: Treat it as the TYPO3 adapter for a tool we already want, not a new tool. Start advisory (non-blocking) on one repository, publish the baseline, then ratchet to blocking on changed files only. Do not enable the full rule set on day one on a legacy codebase — that produces a number nobody will fix and burns credibility for the next attempt.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log