sprintf/symfony-metadata-loader
Brings Symfony's metadata loading components to Laravel, letting you define and resolve class metadata such as validation, serialization, and ORM mappings using familiar Symfony conventions. Includes service provider wiring and configuration for seamless integration.
This package is an infrastructure primitive, not a product capability — so the decisions it informs are narrow and mostly about build vs. buy vs. skip for a metadata-reading layer inside a larger system.
#[Exportable], #[Synced], #[FeatureFlag] and having the framework discover it), this package represents the "buy" column. The real comparison is against ~150–300 lines of native ReflectionAttribute code, not against a mature library.composer require.Consider it only if most of the following are true:
sprintf) is the legitimate maintainer or a lookalike/typosquat risk. A near-zero-adoption package with an ambiguous vendor name is a red flag that must be cleared before anything else.Look elsewhere if:
ReflectionAttribute/ReflectionClass, or established packages like symfony/property-info, nikic/php-parser, or spatie/laravel-data depending on whether you need property-level or class-level metadata.To executives: This is a small, unproven open-source utility that reads class metadata — the mechanism behind "tag a class, get behavior automatically." It's not a product feature and shouldn't appear on a roadmap. Our recommendation is do not adopt as a dependency: it has no community validation, no visible maintainer track record, and an LGPL-2.1 license that introduces legal review overhead disproportionate to the ~200 lines of code it replaces. The pattern is worth adopting; this package is not. Net cost of the decision is near zero either way, so treat it as a reference implementation and move on.
To engineering: Prototype the metadata layer in-house first — you'll likely find native reflection covers 90% of the need behind a thin interface. If you do pull this in, isolate it behind your own abstraction so swapping it out is a one-file change, pin the exact version, run a Composer audit, and assign a named owner. Do not let it enter the dependency tree as a transitive or convenience dependency.
Decision requested: no adoption now; revisit only if (a) upstream shows sustained releases and real dependents, or (b) legal clears LGPL-2.1 for our distribution model — whichever comes first.
How can I help you explore Laravel packages today?