1. Go to this page and download the library: Download nepada/message-bus 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/ */
nepada / message-bus example snippets
final class DoSomethingHandler implements \Nepada\MessageBus\Commands\CommandHandler
{
/**
* @throws SomeException
*/
public function __invoke(DoSomethingCommand $command): void
{
// ...
}
}
final class DoSomethingOnSomethingHappened implements \Nepada\MessageBus\Events\EventSubscriber
{
public function __invoke(SomethingHappenedEvent $event): void {}
}
use Nepada\MessageBus\StaticAnalysis\ConfigurableHandlerValidator;
use Nepada\MessageBus\StaticAnalysis\HandlerType;
use Nepada\MessageBus\StaticAnalysis\MessageHandlerValidationConfiguration;
// Validate command handler
$commandHandlerType = HandlerType::fromString(DoSomethingHandler::class);
$commandHandlerConfiguration = MessageHandlerValidationConfiguration::command();
$commandHandlerValidator = new ConfigurableHandlerValidator($commandHandlerConfiguration);
$commandHandlerValidator->validate($commandHandlerType);
// Validate event subscriber
$eventSubscriberType = HandlerType::fromString(DoSomethingOnSomethingHappened::class);
$eventSubscriberConfiguration = MessageHandlerValidationConfiguration::event();
$eventSubscriberValidator = new ConfigurableHandlerValidator($eventSubscriberConfiguration);
$eventSubscriberValidator->validate($eventSubscriberType);
use Nepada\MessageBus\StaticAnalysis\HandlerType;
use Nepada\MessageBus\StaticAnalysis\MessageTypeExtractor;
// Extracting handled message type
$messageTypeExtractor = new MessageTypeExtractor();
$commandHandlerType = HandlerType::fromString(DoSomethingHandler::class);
$messageTypeExtractor->extract($commandHandlerType); // MessageType instance for DoSomethingCommand
use Nepada\MessageBus\Commands\CommandHandlerLocator;
use Nepada\MessageBus\Commands\MessengerCommandBus;
use Nepada\MessageBus\Events\EventSubscribersLocator;
use Nepada\MessageBus\Events\MessengerEventDispatcher;
use Nepada\MessageBus\Logging\LogMessageResolver;
use Nepada\MessageBus\Logging\MessageContextResolver;
use Nepada\MessageBus\Logging\PrivateClassPropertiesExtractor;
use Nepada\MessageBus\Middleware\LoggingMiddleware;
use Nepada\MessageBus\Middleware\PreventNestedHandlingMiddleware;
use Symfony\Component\Messenger\MessageBus;
use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware;
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
$dispatchAfterCurrentBusMiddleware = new DispatchAfterCurrentBusMiddleware();
$preventNestedHandlingMiddleware = new PreventNestedHandlingMiddleware();
$loggingMiddleware = new LoggingMiddleware(
new LogMessageResolver(),
new MessageContextResolver(
new PrivateClassPropertiesExtractor(),
),
$psrLogger,
);
$handleCommandMiddleware = new HandleMessageMiddleware(
new CommandHandlerLocator(
$psrContainer,
[
DoSomethingCommand::class => 'doSomethingHandlerServiceName',
],
),
);
$handleEventMiddleware = new HandleMessageMiddleware(
new EventSubscribersLocator(
$psrContainer,
[
SomethingHappenedEvent::class => [
'doSomethingOnSomethingHappenedServiceName',
'doSomethingElseOnSomethingHappenedServiceName',
],
],
),
);
$eventDispatcher = new MessengerEventDispatcher(
new MessageBus([
$dispatchAfterCurrentBusMiddleware,
$loggingMiddleware,
$handleEventMiddleware,
]),
);
$commandBus = new MessengerCommandBus(
new MessageBus([
$dispatchAfterCurrentBusMiddleware,
$loggingMiddleware,
$preventNestedHandlingMiddleware,
$handleCommandMiddleware,
]),
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.