wtfzdotnet/wtfz-tmdb-bundle
A Symfony bundle for integrating The Movie Database (TMDb) API, making it easy to fetch and use movie, TV show, cast, and related metadata in your PHP applications.
Architecture fit
symfony/framework-bundle, the DI container, and HttpKernel. It cannot be dropped into a Laravel application; Laravel would need to consume php-tmdb/api directly and hand-wire its service provider.php-tmdb/api — it registers the TMDB client, HTTP client, cache, logger, and event dispatcher wiring as container services, plus an image helper. Autowiring works out of the box.php-tmdb/api, not in the bundle. That is strategically important: it means the bundle is replaceable by roughly 20–40 lines of services.yaml and a factory, and the integration is not hostage to the bundle's health.Integration feasibility
composer require, enable the bundle in config/bundles.php, add a config/packages/wtfz_tmdb.yaml with credentials, inject the client service. A half-day spike covers a full round-trip.Technical risk
Key questions
php-tmdb/api directly.php-tmdb/api, a bespoke thin client over TMDB's OpenAPI spec, or an HTTP-client-based adapter) that we would prefer on principle?Stack fit
php-tmdb/api behind a Laravel service provider, or a small first-party client. Budget one extra day for manual wiring compared to the Symfony path.Migration path
MovieCatalog (or equivalent) contract with the handful of methods we need, and implement it with a thin adapter over the TMDB client. This is the single highest-leverage decision here — it makes the bundle swappable for a hand-wired php-tmdb/api client, an alternate library, or a raw HTTP client without touching domain code.Tmdb\Model\Movie, etc.) leak into our domain layer. Map to our own DTOs at the adapter boundary.services.yaml factory: construct Tmdb\Client with our PSR-18/PSR-17 stack, PSR-6 cache, PSR-3 logger, and event dispatcher. Contained, reversible, low cost.Compatibility
php-tmdb/api to exact or narrow ranges; the lack of an active release cadence means upstream minors will not be validated for us.Sequencing
php-tmdb/api.Maintenance
composer.json constraint bump. Budget for this in the plan rather than treating it as a surprise.php-tmdb/api separately from the bundle; the underlying library's activity matters more than the bundle's, and it can be maintained independently.Support
Scaling
Failure modes
Ramp-up
Recommendation
Conditional. Proceed only if the target stack is Symfony and the Day-1 resolution spike passes — and even then, integrate strictly behind a first-party interface so the bundle is a replaceable detail rather than an architectural commitment. If the stack is Laravel, or if the spike fails, use php-tmdb/api directly with hand-wired configuration; the bundle contributes convenience, not capability, and is not worth carrying the maintenance burden for.
How can I help you explore Laravel packages today?