Simplify message sending processes in a Symfony2 project.
Imagine that your application sends emails, triggers UI notifications, sends SMS. You are using several libraries to do it. And if you did not factorize your code, you will have bunch of copy paste in every place you are sending something.
Worst, if you was expecting to send an email some day, you may send also an SMS tomorrow. If that happen, you will need to rewrite your code...
This bundle is trying to help with all these problems, providing a simple way to configure a distribute these messages.
A message
represent the fact that your application is sending something.
Creating a message
is as easy as creating a service of class Yokai\MessengerBundle\Message
with at least 1 yokai_messenger.message
tag,
for each tag you specify the channel
on which the message should be distributed.
You can also register it using this bundle configuration.
A recipient
represent the information about the target of your message.
Every channel
is free to support only certain types of recipient (mostly by checking interfaces).
A channel
represent a way to distribute messages
.
This bundle come with some built-in channels
:
Yokai\MessengerBundle\Channel\SwiftmailerChannel
: sending an email with Swift Mailer. Read the channel documentationYokai\MessengerBundle\Channel\DoctrineChannel
: recording a database entry with Doctrine ORM. Read the channel documentationYokai\MessengerBundle\Channel\MobileChannel
: pushing a mobile notification with NotificationPusher. Read the channel documentation
Creating a channel
is as easy as creating a service that implements Yokai\MessengerBundle\Channel\ChannelInterface
with the yokai_messenger.channel
tag.
A channel
will be asked to handle a delivery
whenever a message is about to be sent.
A delivery
(Yokai\MessengerBundle\Delivery
) represent the message
about to be sent to a recipient
for a channel
.
It is mainly matter of storing all the data in the same place.
Creating a delivery
is an internal process, that must be done by the sender
.
The sender
is your entry point for sending messages.
It centralize the configuration of which messages
to send over which channels
.
$ php composer.phar require yokai/messenger-bundle
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = [
// ...
new Yokai\MessengerBundle\YokaiMessengerBundle(),
];
}
Please read the dedicated documentation.
Please read the dedicated documentation.
License can be found here.
The bundle was originally created by Yann Eugoné.
See the list of contributors.