arch-8.x-1.x-dev/modules/product/src/ProxyClass/ParamConverter/ProductPreviewConverter.php
modules/product/src/ProxyClass/ParamConverter/ProductPreviewConverter.php
<?php
namespace Drupal\arch_product\ProxyClass\ParamConverter;
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
use Drupal\Core\ParamConverter\ParamConverterInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Routing\Route;
/**
* Product preview converter.
*
* Provides a proxy class for
* \Drupal\arch_product\ParamConverter\ProductPreviewConverter.
*
* @package Drupal\arch_product\ProxyClass\ParamConverter
*/
class ProductPreviewConverter implements ParamConverterInterface {
use DependencySerializationTrait;
/**
* The id of the original proxied service.
*
* @var string
*/
protected $drupalProxyOriginalServiceId;
/**
* The real proxied service, after it was lazy loaded.
*
* @var \Drupal\arch_product\ParamConverter\ProductPreviewConverter
*/
protected $service;
/**
* The service container.
*
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
protected $container;
/**
* Constructs a ProxyClass Drupal proxy object.
*
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container
* The container.
* @param string $drupal_proxy_original_service_id
* The service ID of the original service.
*/
public function __construct(
ContainerInterface $container,
$drupal_proxy_original_service_id,
) {
$this->container = $container;
$this->drupalProxyOriginalServiceId = $drupal_proxy_original_service_id;
}
/**
* Lazy loads the real service from the container.
*
* @return object
* Returns the constructed real service.
*/
protected function lazyLoadItself() {
if (!isset($this->service)) {
$this->service = $this->container->get($this->drupalProxyOriginalServiceId);
}
return $this->service;
}
/**
* {@inheritdoc}
*/
public function convert($value, $definition, $name, array $defaults) {
return $this->lazyLoadItself()
->convert($value, $definition, $name, $defaults);
}
/**
* {@inheritdoc}
*/
public function applies($definition, $name, Route $route) {
return $this->lazyLoadItself()->applies($definition, $name, $route);
}
}
