1. Go to this page and download the library: Download makinacorpus/corebus 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/ */
makinacorpus / corebus example snippets
return [
// ... your other bunbles.
MakinaCorpus\CoreBus\Bridge\Symfony\CoreBusBundle::class => ['all' => true],
];
namespace App\Domain\SomeBusiness\Command;
final class SayHelloCommand
{
public readonly string $name;
public function __construct(string $name)
{
$this->name = $name;
}
}
namespace App\Domain\SomeBusiness\Event;
final class HelloWasSaidEvent
{
public readonly string $name;
public function __construct(string $name)
{
$this->name = $name;
}
}
namespace App\Domain\SomeBusiness\Handler;
use MakinaCorpus\CoreBus\CommandBus\AbstractCommandHandler;
final class SayHelloHandler extends AbstractCommandHandler
{
/*
* Method name is yours, you may have more than one handler in the
* same class, do you as wish. Only important thing is to implement
* the Handler interface (here via the AbstractHandler class).
*/
public function do(SayHelloCommand $command)
{
echo "Hello, ", $command->name, "\n";
$this->notifyEvent(new HelloWasSaidEvent($command->name));
}
}
namespace App\Domain\SomeBusiness\Listener;
use MakinaCorpus\CoreBus\EventBus\EventListener;
final class SayHelloListener implements EventListener
{
/*
* Method name is yours, you may have more than one handler in the
* same class, do you as wish. Only important thing is to implement
* the EventListener interface.
*/
public function on(HelloWasSaidEvent $event)
{
$this->logger->debug("Hello was said to {name}.", ['name' => $event->name]);
}
}
namespace App\Domain\SomeBusiness\Handler;
use MakinaCorpus\CoreBus\EventBus\EventBusAware;
use MakinaCorpus\CoreBus\EventBus\EventBusAwareTrait;
final class SayHelloHandler implements EventBusAware
{
use EventBusAwareTrait;
/*
* Method name is yours, you may have more than one handler in the
* same class, do you as wish. Only important thing is to implement
* the Handler interface (here via the AbstractHandler class).
*/
#[MakinaCorpus\CoreBus\Attr\CommandHandler]
public function do(SayHelloCommand $command)
{
echo "Hello, ", $command->name, "\n";
$this->notifyEvent(new HelloWasSaidEvent($command->name));
}
}
namespace App\Domain\SomeBusiness\Listener;
final class SayHello
{
/*
* Method name is yours, you may have more than one handler in the
* same class, do you as wish. Only important thing is to implement
* the EventListener interface.
*/
#[MakinaCorpus\CoreBus\Attr\EventListener]
public function on(HelloWasSaidEvent $event)
{
$this->logger->debug("Hello was said to {name}.", ['name' => $event->name]);
}
}
namespace App\Domain\SomeBusiness\AccessControl;
use MakinaCorpus\CoreBus\CommandBus\CommandAuthorizationChecker;
class MyCommandAuthorizationChecker implements CommandAuthorizationChecker
{
/**
* {@inheritdoc}
*/
public function isGranted(object $command): bool
{
if ($command instanceof SomeForbiddenCommand) {
return false;
}
return true;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.