* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PrestashopCheckout\CommandBus; use League\Tactician\CommandBus; use League\Tactician\Handler\CommandHandlerMiddleware; use League\Tactician\Handler\CommandNameExtractor\ClassNameExtractor; use League\Tactician\Handler\MethodNameInflector\HandleInflector; use League\Tactician\Logger\Formatter\ClassPropertiesFormatter; use League\Tactician\Logger\LoggerMiddleware; use Ps_checkout; use Psr\Log\LoggerInterface; class TacticianCommandBusFactory { /** * @var Ps_checkout */ private $module; /** * @var array */ private $commandToHandlerMap; /** * @var LoggerInterface */ private $logger; /** * @param Ps_checkout $module * @param LoggerInterface $logger * @param array $commandToHandlerMap */ public function __construct(Ps_checkout $module, LoggerInterface $logger, array $commandToHandlerMap) { $this->module = $module; $this->logger = $logger; $this->commandToHandlerMap = $commandToHandlerMap; } /** * @return CommandBus */ public function create() { return new CommandBus([ new LoggerMiddleware( new ClassPropertiesFormatter(), $this->logger ), new CommandHandlerMiddleware( new ClassNameExtractor(), new TacticianContainerLocator( $this->module, $this->commandToHandlerMap ), new HandleInflector() ), ]); } }