Inject Renderer to Initializer

[MAILPOET-1823]
This commit is contained in:
Rostislav Wolny
2019-02-20 14:06:39 +01:00
committed by M. Shull
parent d8503cf3c2
commit 171b3564f9
3 changed files with 34 additions and 13 deletions

View File

@ -18,16 +18,26 @@ if (!defined('ABSPATH')) exit;
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
class Initializer {
private $access_control;
/** @var Renderer */
private $renderer;
/** @var RendererFactory */
private $renderer_factory;
/** @var ContainerInterface */
private $container;
const INITIALIZED = 'MAILPOET_INITIALIZED';
function __construct(ContainerWrapper $container) {
function __construct(
ContainerWrapper $container,
RendererFactory $renderer_factory
) {
$this->container = $container;
$this->renderer_factory = $renderer_factory;
}
function init() {
@ -109,17 +119,13 @@ class Initializer {
function preInitialize() {
try {
$this->setupRenderer();
$this->renderer = $this->renderer_factory->getRenderer();
$this->setupWidget();
} catch (\Exception $e) {
$this->handleFailedInitialization($e);
}
}
function setupRenderer() {
$this->renderer = $this->container->get(Renderer::class);
}
function setupWidget() {
register_widget('\MailPoet\Form\Widget');
}

View File

@ -0,0 +1,20 @@
<?php
namespace MailPoet\Config;
if (!defined('ABSPATH')) exit;
class RendererFactory {
/** @var Renderer */
private $renderer;
function getRenderer() {
if (!$this->renderer) {
$caching = !WP_DEBUG;
$debugging = WP_DEBUG;
$this->renderer = new Renderer($caching, $debugging);
}
return $this->renderer;
}
}

View File

@ -55,9 +55,10 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Config\Hooks::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Initializer::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Menu::class)->setPublic(true);
$container->autowire(\MailPoet\Config\RendererFactory::class)->setPublic(true);
$container->register(\MailPoet\Config\Renderer::class)
->setPublic(true)
->setFactory([__CLASS__, 'createRenderer']);
->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']);
// Cron
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
@ -115,10 +116,4 @@ class ContainerConfigurator implements IContainerConfigurator {
}
return $container->get(IContainerConfigurator::PREMIUM_CONTAINER_SERVICE_SLUG)->get($id);
}
static function createRenderer() {
$caching = !WP_DEBUG;
$debugging = WP_DEBUG;
return new \MailPoet\Config\Renderer($caching, $debugging);
}
}