mtarld/symbok-bundle
Symfony bundle inspired by Lombok that generates getters, setters, constructors, adders and removers for your PHP classes from simple annotations, cutting boilerplate in entities and DTOs while keeping your code plain, native PHP.
Architecture fit. mtarld/symbok-bundle is a Symfony bundle, and the framing here is "Laravel/PHP" — that mismatch is the first thing a TPM must resolve before any other judgment. The package targets Symfony's kernel and bundle registration, its DI container, and Doctrine's annotation reader. Laravel exposes none of those extension points: no service provider, no bundle, no annotation-metadata pipeline over Eloquent models. So for the stated platform, architectural fit is effectively zero. Its design intent — move container wiring out of services.yaml and into class-level metadata, resolved by a compiler pass at container compile time — is conceptually interesting but is a Spring-style pattern Laravel never adopted because its container already resolves bindings and attributes natively. Where it does fit is a PHP 7.x Symfony 4/5 application with annotation-heavy services; even there it now competes with Symfony's own native PHP attributes and SensioFrameworkExtraBundle's deprecation path.
Integration feasibility. Composer-installable and MIT-licensed, so "reachable" from any PHP project — but reachable is not integrable. A Laravel adoption would require a bespoke bridge translating Symfony bundle conventions into Laravel container and route registration: engineering spend with no upstream support, no ecosystem to lean on, and no reusable prior art. Inside Symfony the install is trivial (register the bundle, enable the annotation reader), but only for the framework and PHP versions it was built against, and those are precisely the versions Symfony is steering teams away from.
Technical risk. The repository is archived, which is a hard stop for new adoption rather than a soft signal. Consequences are concrete: no security patches, no compatibility work for current PHP or Symfony releases, no issue triage, and total dependence on doctrine/annotations, which the ecosystem is actively retiring. 48 stars and 0 dependents mean no production validation and a near-empty troubleshooting corpus — a single-maintainer artifact whose maintainer has already stopped. The underlying capability is also being absorbed upstream: Symfony 6.2+ ships native attributes (#[Route], #[Template], #[Cache], #[IsGranted], #[MapEntity]), and SensioFrameworkExtraBundle — the thing this bundle was a lighter alternative to — is itself deprecated. Net: an abandoned shim for a superseded configuration idiom.
Key questions for the requester.
TPM position: no-go for new adoption. If already present, classify as tech debt with a scheduled removal, not a component to build on. It is worth ~30 minutes as a reference implementation for compiler-pass-based codegen; it is not worth a composer require.
Stack fit. Symfony 4/5 on PHP 7.4–8.0 is the plausible support envelope. Laravel 10/11 is out of scope — do not attempt an adapter layer; it converts a vendor problem into a permanent internal maintenance obligation for a capability the framework already provides natively. If the requirement is genuinely Laravel-adjacent, the answer is Laravel's own attribute-based auto-resolution (#[Route], #[Middleware], #[Scope]), not this bundle.
Migration path (for Symfony estates). Treat the bundle as transitional and map each annotation to its native successor before removal. The mapping is largely 1:1, which is what makes this an estimable, mechanical workstream rather than a research project: service registration annotations → services.yaml attributes or #[Autowire]/#[AsAlias]; controller annotations → #[Route], #[Template], #[Cache], #[IsGranted], #[MapEntity]; entity/DTO accessor annotations → constructor property promotion plus readonly (PHP 8.1+), which removes most of the motivation outright. On the boilerplate-reduction angle specifically, the disciplined substitute is a Rector-driven refactor to PHP 8.1+ syntax — same outcome, active stewardship, no vendor risk.
Compatibility. Expect friction on Symfony 6.2+ (native attributes overlap and may double-register routes or shadow configuration), on doctrine/annotations 2.x, and on any PHP minor newer than the bundle's test matrix. Because the repo is archived, none of this gets fixed upstream. Pinning is the only mitigation, and pinning is a deadline, not a strategy.
Sequencing.
bin/console debug:container and debug:router output. Do not trust the README; in an archived package the test fixtures are the documentation.cache:clear, debug:container, verify the definition appeared, then stop and report before scaling.composer audit, static check, or a deny-list) preventing reintroduction.Maintenance. Archived status transfers all maintenance to the adopting team: fork-and-own, security triage, and PHP/Symfony compatibility patches. That is a standing, recurring cost against a capability that is now commodity framework behavior — the worst possible ratio of ongoing cost to differentiation.
Support. Community-only with no vendor and, in practice, no community: documentation is thin, the install base is effectively nil, and public issue trackers will not help because nobody is triaging them. Expect degraded assistance from tooling and coding assistants here too — models tend to assume SensioFrameworkExtraBundle parity or invent Laravel semantics that do not exist. Verify every behavior against the source, never against generated advice.
Scaling. Runtime impact is negligible — annotation parsing is compile-time and cached, not per-request, so there is no throughput story to worry about. The real scaling constraint is organizational: every engineer onboarded must learn a bespoke, undocumented, unmaintained dialect precisely as the wider ecosystem standardizes on native attributes, and every future framework upgrade inherits an unmaintained blocker that must be forked or removed under time pressure.
Failure modes to plan for.
Ramp-up. Low to learn the annotations — roughly a day for a competent Symfony developer — low-but-misleading for a Laravel developer who will spend that day discovering it cannot be integrated at all, and high to unwind later. Transferable value to a Laravel team is near zero. If the real requirement is declarative, attribute-driven configuration, ramp-up on native Symfony attributes or native PHP 8.1+ syntax is comparable — and those artifacts are supported, documented, and permanent. That comparison is the whole business case, and it does not favor this package.
How can I help you explore Laravel packages today?