1. Go to this page and download the library: Download snebes/notifications-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
snebes / notifications-bundle example snippets
public function registerBundles()
{
return array(
// ...
new SN\Bundle\NotificationsBundle\SNNotificationsBundle(),
);
}
namespace App\Service;
use App\Entity\User;
use App\Notifications\OrderNotification;
use SN\Notifications\NotificationSender;
class UserService
{
private $notificationSender;
public function __construct(NotificationSender $notificationSender)
{
$this->notificationSender = $notificationSender;
}
public function send(User $user)
{
$this->notificationSender->send($user, new OrderNotification());
}
}
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use SN\Bundle\NotificationsBundle\Entity\Notification;
use SN\Notifications\Contracts\NotifiableInterface;
use SN\Notifications\NotifiableTrait;
/**
* @ORM\Entity()
*/
class User implements NotifiableInterface
{
use NotifiableTrait;
/**
* This field is used by the Mail channel.
*
* @var string
*/
private $email = '[email protected]';
/**
* This field is used by the SMS channel.
*
* @var string
*/
private $phoneNumber = '+1 555 555 5555';
/**
* @var Notification[]
*
* @ORM\ManyToMany(targetEntity=Notification::class)
* @ORM\JoinTable(name="user_notifications")
*/
private $notifications;
}
/**
* Get the notification's delivery channels.
*
* @param NotifiableInterface $notifiable
*
* @return array
*/
public function via(NotifiableInterface $notifiable): array
{
return $notifiable->doNotSendEmail() ? ['database'] : ['database', 'mail'];
}
namespace App\Notification;
use SN\Notifications\Contracts\EmailInterface;
use SN\Notifications\Contracts\MailableInterface;
use SN\Notifications\Contracts\NotifiableInterface;
use SN\Notifications\Contracts\NotificationInterface;
use SN\Notifications\Email\Address;
use SN\Notifications\Email\Email;
class OrderNotification implements NotificationInterface, MailableInterface
{
/**
* Get the notification's delivery channels.
*
* @param NotifiableInterface $notifiable
*
* @return array
*/
public function via(NotifiableInterface $notifiable): array
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param NotifiableInterface $notifiable
*
* @return EmailInterface
*/
public function toMail(NotifiableInterface $notifiable): EmailInterface
{
return (new Email())
->from(new Address('[email protected]'))
->subject('Thank you for your order.')
->text('We are processing your order right now!');
}
}
namespace App\Entity;
use SN\Notifications\Contracts\NotifiableInterface;
use SN\Notifications\Contracts\NotificationInterface;use SN\Notifications\NotifiableTrait;
class User implements NotifiableInterface
{
use NotifiableTrait;
/**
* Route notifications for the mail channel.
*
* @param NotificationInterface $notification
*
* @return string
*/
public function routeNotificationForMail(NotificationInterface $notification)
{
return $this->getEmailAddress();
}
}
namespace App\Notification;
use SN\Notifications\Contracts\ArrayableInterface;
use SN\Notifications\Contracts\NotifiableInterface;
use SN\Notifications\Contracts\NotificationInterface;
class OrderNotification implements NotificationInterface, ArrayableInterface
{
/**
* Get the notification's delivery channels.
*
* @param NotifiableInterface $notifiable
*
* @return array
*/
public function via(NotifiableInterface $notifiable): array
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param NotifiableInterface $notifiable
*
* @return array
*/
public function toArray(NotifiableInterface $notifiable): array
{
return [
'order_id' => $this->orderId,
'amount' => $this->amount,
];
}
}