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

Messanger Bundle Laravel Package

igdr/messanger-bundle

igdr/messanger-bundle is a PHP bundle that adds private messaging and chat capabilities to your application. It provides the core entities, services, and integration points needed to send, store, and retrieve user-to-user messages with minimal setup.

View on GitHub
Deep Wiki
Context7

Getting Started

Treat this as a source-first package: with zero stars, zero dependents, and no published documentation, the vendor directory is your real README. Do not assume an API from the name alone — "Messanger" is misspelled, and a bundle with this little traction may be a thin wrapper around Symfony Messenger, a custom PM/notification system, or an internal project helper.

Minimal setup:

  1. Install and inspect before wiring anything up.

    composer require igdr/messanger-bundle
    ls vendor/igdr/messanger-bundle
    

    Look first at README.md, composer.json (for symfony/* version constraints), src/, and src/DependencyInjection/ (or DependencyInjection/) — the Extension class tells you the config tree, and the config tree tells you what the bundle actually does.

  2. Register the bundle in config/bundles.php (Symfony Flex may do this automatically if the recipe exists — for a 0-star package it likely does not, so add it manually):

    return [
        // ...
        Igdr\MessangerBundle\MessangerBundle::class => ['all' => true],
    ];
    
  3. Check whether a config file is required. Run bin/console config:dump-reference messanger (or whatever the bundle alias is — verify it in the Extension class's getAlias()). If it errors, the bundle takes no configuration or uses a different alias.

  4. First use case: find the primary public service. Grep the bundle for class definitions that end in Manager, Sender, Handler, Client, or Service, then confirm it's registered as a service in Resources/config/services.*. A minimal smoke test is to inject that service into a console command or a test and invoke its simplest public method — do not start with production integrations.

Because the package is effectively unknown, budget a short spike to read the source end-to-end (it's likely small) before committing it to a codebase.

Implementation Patterns

The right pattern depends on what the bundle turns out to be, but these hold in general:

Service injection over static access. Register the bundle's services via constructor injection in your own services. If the bundle exposes an interface (e.g. a SenderInterface or MessageBusInterface), type against the interface and alias the concrete implementation in your services.yaml so you can swap it later or mock it in tests.

If it wraps Symfony Messenger, extend rather than replace. Keep your own messenger.yaml routing for transports and let the bundle contribute handlers/middleware. Verify there is no conflict by running bin/console debug:messenger (Symfony 5.1+) — duplicate handler registrations are the classic symptom of two bundles managing the same bus.

If it is a notification/PM-style system (matching the name), encapsulate it behind a small application-level port: define your own Notifier interface, implement it with a thin adapter that delegates to the bundle's service, and inject your interface everywhere else. This isolates you from a package that could disappear.

Configuration as the seam. Put every bundle option in config/packages/messanger.yaml (or the correct alias), keyed per environment. Use when@dev/when@test blocks to point at a null or in-memory transport so local runs never reach a real channel.

Testing. For anything async or channel-based, use Symfony's KernelTestCase and assert on the transport (e.g. $transport->getSent() on InMemoryTransport) rather than on side effects. If the bundle has no test-friendly transport, write an adapter and test the adapter contract, not the bundle.

Gotchas and Tips

  • The misspelling is a trap. Expect typos in namespaces, config aliases, and even class names. Copy namespaces verbatim from the source; do not "correct" them in your use statements.
  • Verify framework compatibility up front. Check composer.json's require against your Symfony version. A near-unmaintained bundle may target Symfony 4/5 and break on 6/7 (attribute autoconfiguration, ContainerBuilder API changes, PHP 8 types).
  • Container compilation errors are your fastest signal. bin/console cache:clear and bin/console debug:container <service> will tell you whether services actually registered; a missing compiler pass often manifests only at runtime.
  • Do not rely on default config. config:dump-reference may be empty or misleading; if there's a Configuration.php, read its getConfigTreeBuilder() directly to learn real option names and defaults.
  • Audit for abandoned internals. Grep for deprecated APIs (Swift_Mailer, ContainerAwareCommand, @required, annotations) — these indicate the package was not refreshed for the Symfony 6 attribute era and will generate deprecations or fatal errors.
  • Extension points to look for: a tagged-service convention (a tag name in MessangerExtension::load()), an interface you can implement for custom transports/handlers, or an event dispatcher. If none exist, treat the bundle as closed and wrap it.
  • Debugging async: if messages vanish, check messenger:failed:show first, then the transport DSN and worker logs. If handlers aren't called, run debug:messenger to confirm registration.
  • Supply-chain caution. Zero stars and zero dependents means no community scrutiny. Pin the exact version in composer.json, run composer audit, and consider vendoring a copy or forking so an upstream deletion can't break builds.
  • Have an exit plan. Because the community surface is essentially nil, keep the adapter boundary described above so replacement is a one-class change, not a codebase-wide refactor.
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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource