From de5385ed0362e733d2481bd2a5f9c2040bc764b2 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Wed, 12 Dec 2018 11:02:31 +0100 Subject: [PATCH] Get rid of static instantiation of JSON API [MAILPOET-1689] --- lib/API/API.php | 26 +------------------------- lib/Config/Initializer.php | 4 +--- tests/integration/API/APITest.php | 3 --- 3 files changed, 2 insertions(+), 31 deletions(-) diff --git a/lib/API/API.php b/lib/API/API.php index 4b887813c5..03214e6916 100644 --- a/lib/API/API.php +++ b/lib/API/API.php @@ -3,41 +3,17 @@ namespace MailPoet\API; use MailPoet\DI\ContainerWrapper; -use MailPoetVendor\Psr\Container\ContainerInterface; use MailPoetVendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; if(!defined('ABSPATH')) exit; class API { - - /** @var ContainerInterface */ - private static $container; - - static function injectContainer(ContainerInterface $container) { - self::$container = $container; - } - - static function JSON() { - return self::$container->get(JSON\API::class); - } - static function MP($version) { - self::ensureContainerIsLoaded(); $api_class = sprintf('%s\MP\%s\API', __NAMESPACE__, $version); try { - return self::$container->get($api_class); + return ContainerWrapper::getInstance()->get($api_class); } catch (ServiceNotFoundException $e) { throw new \Exception(__('Invalid API version.', 'mailpoet')); } } - - /** - * MP API is used by third party plugins so we have to ensure that container is loaded - * @see https://kb.mailpoet.com/article/195-add-subscribers-through-your-own-form-or-plugin - */ - private static function ensureContainerIsLoaded() { - if(!self::$container) { - self::$container = ContainerWrapper::getInstance(); - } - } } diff --git a/lib/Config/Initializer.php b/lib/Config/Initializer.php index fb1be2517f..4f9bddcce0 100644 --- a/lib/Config/Initializer.php +++ b/lib/Config/Initializer.php @@ -98,7 +98,6 @@ class Initializer { function loadContainer() { $this->container = ContainerWrapper::getInstance(WP_DEBUG); - API\API::injectContainer($this->container); } function checkRequirements() { @@ -260,8 +259,7 @@ class Initializer { } function setupJSONAPI() { - $json_api = API\API::JSON(); - $json_api->init(); + $this->container->get(API\JSON\API::class)->init(); } function setupRouter() { diff --git a/tests/integration/API/APITest.php b/tests/integration/API/APITest.php index 164a608bd6..9113123669 100644 --- a/tests/integration/API/APITest.php +++ b/tests/integration/API/APITest.php @@ -5,9 +5,6 @@ use MailPoet\API\API; use MailPoet\Config\AccessControl; class APITest extends \MailPoetTest { - function testItCallsJSONAPI() { - expect(API::JSON())->isInstanceOf('MailPoet\API\JSON\API'); - } function testItCallsMPAPI() { expect(API::MP('v1'))->isInstanceOf('MailPoet\API\MP\v1\API');