Add endpoint-class factory based on PSR-11 container interface
[MAILPOET-4135]
This commit is contained in:
25
mailpoet/lib/Automation/API/EndpointFactory.php
Normal file
25
mailpoet/lib/Automation/API/EndpointFactory.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace MailPoet\Automation\API;
|
||||||
|
|
||||||
|
use MailPoet\InvalidStateException;
|
||||||
|
use MailPoetVendor\Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
|
class EndpointFactory {
|
||||||
|
/** @var ContainerInterface */
|
||||||
|
private $container;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
ContainerInterface $container
|
||||||
|
) {
|
||||||
|
$this->container = $container;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createEndpoint(string $class): Endpoint {
|
||||||
|
$endpoint = $this->container->get($class);
|
||||||
|
if (!$endpoint instanceof Endpoint) {
|
||||||
|
throw new InvalidStateException(sprintf("Class '%s' doesn't implement '%s'", $class, Endpoint::class));
|
||||||
|
}
|
||||||
|
return $endpoint;
|
||||||
|
}
|
||||||
|
}
|
@@ -101,6 +101,9 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\AutomaticEmails\WooCommerce\Events\PurchasedInCategory::class)->setPublic(true);
|
$container->autowire(\MailPoet\AutomaticEmails\WooCommerce\Events\PurchasedInCategory::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\AutomaticEmails\WooCommerce\Events\PurchasedProduct::class)->setPublic(true);
|
$container->autowire(\MailPoet\AutomaticEmails\WooCommerce\Events\PurchasedProduct::class)->setPublic(true);
|
||||||
// Automation
|
// Automation
|
||||||
|
$container->autowire(\MailPoet\Automation\API\EndpointFactory::class)
|
||||||
|
->setPublic(true)
|
||||||
|
->setArgument('$container', new Reference(ContainerWrapper::class));
|
||||||
$container->autowire(\MailPoet\Automation\Automation::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Automation::class)->setPublic(true);
|
||||||
// Config
|
// Config
|
||||||
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
|
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
|
||||||
|
Reference in New Issue
Block a user