1. Go to this page and download the library: Download cvek/domain-events 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/ */
cvek / domain-events example snippets
use Doctrine\ORM\Events;
public function setName(string $name): self
{
$this->name = $name;
$this->raise(new NameChangedDirectAsyncMessage($this));
return $this;
}
use \Cvek\DomainEventsBundle\EventDispatch\Event\AbstractSyncDomainEvent;
final class FooNameChanged extends AbstractSyncDomainEvent
{
private Foo $foo;
private string $oldName;
private string $newName;
public function __construct(Foo $foo, string $oldName, string $newName)
{
$this->foo = $foo;
$this->oldName = $oldName;
$this->newName = $newName;
}
public function getFoo(): Foo
{
return $this->foo;
}
public function getOldName(): string
{
return $this->oldName;
}
public function getNewName(): string
{
return $this->newName;
}
public function isAsync() : bool
{
return false;
}
}
use \Cvek\DomainEventsBundle\EventDispatch\Event\AbstractAsyncDomainEvent;
final class FooPasswordChanged extends AbstractAsyncDomainEvent
{
private Foo $foo;
private string $password;
public function __construct(Foo $foo, string $password)
{
$this->foo = $foo;
$this->password = $password;
}
public function getFoo(): Foo
{
return $this->foo;
}
public function getPassword(): string
{
return $this->password;
}
public function isAsync() : bool
{
return true;
}
}
use \Cvek\DomainEventsBundle\Entity\RaiseEventsInterface;
use \Cvek\DomainEventsBundle\Entity\RaiseEventsTrait;
class Foo implements RaiseEventsInterface
{
use RaiseEventsTrait;
private string $name;
public function setName(string $name): self
{
$this->raise(new FooNameChanged($this, $this->name, $name));
$this->name = $name;
return $this;
}
public function setPassword(string $password): self
{
$this->raise(new FooPasswordChanged($this, $password));
return $this;
}
}
use \Symfony\Component\EventDispatcher\EventSubscriberInterface;
use \Doctrine\ORM\Events;
final class FooNameListener implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
FooNameChanged::class => 'onNameChange'
];
}
public function onNameChange(FooNameChanged $event): void
{
if ($event->getLifecycleEvent() === Events::preFlush) {
// your custom logic on preFlush moment: logging, validation etc...
}
if ($event->getLifecycleEvent() === Events::onFlush) {
// your custom logic on onFlush moment
}
if ($event->getLifecycleEvent() === Events::postFlush) {
// your custom logic on postFlush moment
}
}
}
use \Doctrine\ORM\Events;
use \Symfony\Component\Messenger\Handler\MessageHandlerInterface;
final class FooPasswordHandler implements MessageHandlerInterface
{
public function __invoke(FooPasswordChanged $event)
{
if ($event->getLifecycleEvent() === Events::preFlush) {
// your custom logic on preFlush moment: logging, validation etc...
}
if ($event->getLifecycleEvent() === Events::onFlush) {
// your custom logic on onFlush moment
}
if ($event->getLifecycleEvent() === Events::postFlush) {
// your custom logic on postFlush moment
}
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.