short-edition/framework-extra-bundle
Framework Extra Bundle extends Laravel with practical helpers, traits, and utilities that reduce everyday boilerplate. With simple service provider registration, it drops convenient, reusable features into your app without restructuring existing code, helping you ship faster.
What this actually is. Despite the request framing this as a Laravel/PHP package, short-edition/framework-extra-bundle is a fork of SensioFrameworkExtraBundle, a Symfony bundle. It cannot be installed into a Laravel application in any meaningful way — there is no bundle registration, no Symfony DI container compiler pass chain, and no HttpKernel event dispatcher to hook into. Any evaluation has to start from that category error.
Architecture fit. The upstream bundle's value proposition was annotation-driven controller configuration: @Route, @Template, @Cache, @Security/@IsGranted, @ParamConverter, @Entity. Every one of those concerns has been absorbed into Symfony core:
| Bundle annotation | Native replacement | Since |
|---|---|---|
@Route |
#[Route] (symfony/routing) |
5.2 / 6.0 |
@Template |
#[Template] (symfony/framework-bundle) |
6.2 |
@Cache |
#[Cache] |
6.2 |
@Security / @IsGranted |
#[IsGranted] (symfony/security-http) |
5.2 |
@ParamConverter |
#[MapEntity], #[MapQueryParameter], #[ValueResolver] |
6.2–6.3 |
Upstream is abandoned/EOL — SensioFrameworkExtraBundle was not carried into Symfony 7 and its maintainers explicitly directed users to the native attributes. So this fork is a snapshot of a deliberately retired component.
Integration feasibility: low. Realistic paths are (a) adopt inside a Symfony app pinned to 5.4/6.x that still leans on annotations — viable but strictly technical debt; (b) attempt to bend it into Laravel — not feasible without rewriting the bundle; (c) port individual ideas (ParamConverter-style resolution, template-name inference) into Laravel equivalents (Route::bind, implicit binding, view() inference) — feasible, but you would write it yourself rather than depend on this package.
Technical risk. High, and driven mostly by provenance rather than code quality (the underlying code was solid for its era):
short-edition). No evidence of an active maintainer, release cadence, security-response process, or CI. A fork with no consumers is a one-person patch branch until proven otherwise.doctrine/annotations deprecation, PHP 8.4 implicit-nullable changes) will go unfixed here.doctrine/annotations, which is deprecated; PHP 8 native attributes are the supported path.@Route in a codebase where modern Symfony docs only show #[Route].Key questions for the requesting team:
sensio/framework-extra-bundle (the upstream) — was a specific patch applied, and is that patch documented anywhere?Stack fit. Mismatch on both plausible readings. In Laravel, there is no integration path: no bundle system, different routing, different container, different middleware model. In Symfony, the fit exists but is backward-looking — you would be adopting a component its own maintainers replaced.
If the target is Laravel (recommended mapping, no dependency on this package):
| Desired capability | Laravel-native equivalent |
|---|---|
@Route on controllers |
spatie/laravel-route-attributes or explicit routes/web.php |
@Template |
return view('users.show', $data) / View::first() |
@Cache |
Cache::remember(), ResponseCache middleware |
@IsGranted |
Gate/Policy, $this->authorize(), can: middleware |
@ParamConverter |
Route-model binding, Route::bind(), custom ValueResolver via Model::resolveRouteBinding() |
@Security expression |
Gate::allows() or FormRequest::authorize() |
Migration path (if a legacy Symfony app is the real context). Treat this as a decommissioning project, not an adoption:
grep plus PHPStan/Psalm rules, or Rector's @Route/@Template rulesets) and classify by replacement.#[Route]/#[Template] — then @ParamConverter (usually the hardest, because it hides business logic), then @Security last (highest risk of behavior drift).@Route usage.Compatibility notes to verify before any commitment: PHP constraint (expect >=7.2.5 era, may not run cleanly on 8.4), Symfony ^4.4|^5.0|^6.0 constraints, and whether the fork's composer.json conflicts with symfony/routing >= 6.2 native attributes.
Sequencing advice. Do not greenfield on this. If greenfield, use native attributes (Symfony) or native route attributes (Laravel). The only defensible use is a short-lived bridge in an inherited legacy codebase with a funded migration off it.
Maintenance. This is the dominant cost. A zero-star, zero-dependent fork has no community to absorb upgrades; every PHP minor and Symfony major becomes an internal ticket. Budget roughly 1–2 engineer-days per framework/PHP upgrade for a small fork, plus unbounded time if a PHP 8.4+ deprecation hits doctrine/annotations. Compare that to ~0 for native attributes.
Support. No vendor, no SLA, no issue triage. Internal ownership must be named explicitly (a person, not a team) or it becomes orphaned. If the fork exists because of a private patch, that patch's rationale is at risk of being lost — require a README/commit trail before adopting.
Scaling. Runtime cost is genuinely negligible — annotations are read once at container/cache warmup, and metadata is cached. The scaling concern is cognitive and organizational: the pattern doesn't scale to new hires, and it blocks the framework upgrade that does affect scale (PHP runtime versions, Symfony performance work, long-term support windows). Team scaling is the real constraint.
Failure modes.
AnnotationException at deploy time, not at test time, unless cache warmup runs in CI.@ParamConverter or @Security after a Symfony minor bump — 404s becoming 500s, or authorization quietly tightening/loosening. Needs integration tests around secured routes.doctrine/annotations removal — hard break with no upstream fix coming.short-edition diverging silently from upstream means bug reports and Stack Overflow answers no longer apply.Ramp-up. Low for anyone who worked in Symfony 4/5 (the annotations are well-known and widely documented). Negative for anyone hired after ~2023 — current Symfony and Laravel docs describe attributes and native routing exclusively, so new engineers will read a codebase whose idioms have no modern reference. Expect onboarding friction and a steady trickle of "why isn't this #[Route]?" PRs.
Recommendation. Do not adopt as a dependency. Treat the concepts as the valuable artifact and implement them natively: Symfony #[Route]/#[Template]/#[MapEntity]/#[IsGranted], or Laravel route attributes with policies and route-model binding. If a legacy app already depends on this bundle or its upstream, approve it only under an explicit, time-boxed migration plan with a named owner, a private Composer mirror, and a CI gate preventing new annotation usage.
How can I help you explore Laravel packages today?