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

Imagetag Bundle Laravel Package

palap/imagetag-bundle

Symfony bundle for image tagging that helps PHP applications associate tags with images, manage tag metadata through Doctrine-backed entities, and query or filter tagged media using configurable services.

View on GitHub
Deep Wiki
Context7

Getting Started

Note first: the release notes identify this as an ImageTag Bundle for Symfony 2.3.x. That makes it a Symfony bundle targeting a 2013-era framework line, not a Laravel package. There is no ServiceProvider, no config/*.php publishable config, and no Laravel-facing API surface described. Before writing any code, confirm what you actually have:

  1. Read composer.json first. Look for symfony/framework-bundle, symfony/symfony, and a type of symfony-bundle. If symfony/framework-bundle is a hard requirement at ~2.3, assume it will not install cleanly into a modern Laravel app (Symfony 2.3's HttpKernel/EventDispatcher contracts do not match anything Laravel ships, and the constraint will conflict).
  2. Look for a framework-agnostic core. The useful question is whether the image-tagging logic lives in plain classes (a service, a value object, a repository) that merely happen to be wired by a Symfony DI extension. If so, you can use those classes directly and skip the bundle entirely.
  3. Look for the service definition. In Symfony bundles this is Resources/config/services.yml (or XML). That file tells you the entry-point class name and its constructor dependencies — that's your real integration surface, not the bundle class.

First realistic use case: if the core is reusable, register the entry-point class as a singleton in a Laravel service provider and inject it where you need tags attached to images. If the core is not separable, stop — see the Gotchas section before spending more time.

Implementation Patterns

Because the bundle itself is Symfony-shaped, the day-to-day pattern in Laravel is extraction, not installation.

Pattern 1 — Use the underlying classes directly. Locate the class the bundle registers (from services.yml), then in a Laravel provider:

$this->app->singleton(ImageTagger::class, function ($app) {
    return new ImageTagger(
        $app->make(SomeStorageAdapter::class),
        config('services.image_tag.prefix')
    );
});

This only works if the constructor does not require Symfony ContainerInterface, EventDispatcherInterface, or RequestStack. Check the use statements at the top of the class — that single glance tells you whether extraction is viable.

Pattern 2 — Adapt the boundary. If the class does depend on a Symfony service, write a thin adapter implementing that interface against Laravel equivalents (e.g. a RequestStack shim backed by request()). Keep the shim in app/Support/ and never let it leak into domain code.

Pattern 3 — Port, don't wrap. For a bundle this old, the honest cost-benefit is usually: read the tagging algorithm (likely a few dozen lines of string manipulation or metadata parsing), reimplement it in a small Laravel-native service, and add tests. You get Laravel-idiomatic config, container binding, and queue support without a compatibility layer you'll maintain forever.

Integration tips: if tagging is CPU-bound or hits remote storage, dispatch it through a queued job rather than doing it inline in a controller. Wrap image storage behind Laravel's Storage facade so the tagging service never sees filesystem paths directly — this is the seam that makes the ported logic testable with Storage::fake().

Version note: the jump to 2.3 here tracks Symfony's version, not the package's own semver. Do not read "2.3" as a package major/minor with any Laravel meaning; treat every release as potentially breaking for your adapter.

Gotchas and Tips

The framework mismatch is the headline. A Symfony 2.3 bundle is roughly a decade out of step with Laravel 10/11. Composer will refuse to install it, or worse, will resolve an ancient symfony/* subtree that collides with Laravel's own dependencies. Never install it into a Laravel app "just to see" — do it in a throwaway project or inspect the source on the package repository instead.

Release notes carry almost no signal. The entire note is a title line. There is no changelog, no breaking-change callout, no deprecation list. Assume nothing about backward compatibility between releases; pin explicitly and diff the source when you bump.

Check for these specific hazards in the source:

  • Global state — old bundles frequently read $_FILES, $_SERVER, or call getRequest() statically. Any of these makes the class untestable and unsafe under Octane.
  • PHP version ceiling — Symfony 2.3-era code may use constructs deprecated or removed in PHP 8.x (dynamic properties, curly-brace string offsets, each()).
  • Silent config coupling — bundle config lives in app/config/config.yml with a parameters: block. There is no config/*.php to publish, so you must translate those parameters by hand into a config/image_tag.php.

Debugging approach: if a ported call misbehaves, reproduce it in a plain PHP script against the extracted class first. Layer failures — is it the tagger, the adapter, or Laravel's container — are much easier to isolate outside the framework.

Extension points to look for: whether the tagging strategy is an interface you can re-implement (good — you can drop in your own), or a concrete final class (bad — you're copying code). Similarly, check for Symfony event dispatcher hooks; those translate reasonably well to Laravel events if the class doesn't hard-depend on the Symfony dispatcher.

Bottom line for a Laravel developer: treat this as a reference implementation to read, not a dependency to install. Budget an afternoon to extract or reimplement the tagging logic, write tests against Storage::fake(), and move on. If you need maintained image-tagging in Laravel today, evaluate actively maintained, Laravel-native alternatives first — the cost of porting an orphaned Symfony 2.3 bundle usually exceeds the cost of adopting something current.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
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
adachsoft/php-code-style