Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DimensionCollectionFactory.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
12 
14 {
18  private $multiDimensionProviderFactory;
19 
23  private $dimensionProviders;
24 
28  private $dimensionModeConfiguration;
29 
35  public function __construct(
36  \Magento\Framework\Indexer\MultiDimensionProviderFactory $multiDimensionProviderFactory,
37  DimensionModeConfiguration $dimensionModeConfiguration,
38  array $dimensionProviders
39  ) {
40  $this->multiDimensionProviderFactory = $multiDimensionProviderFactory;
41  $this->dimensionProviders = $dimensionProviders;
42  $this->dimensionModeConfiguration = $dimensionModeConfiguration;
43  }
44 
52  public function create(string $dimensionsMode = null): MultiDimensionProvider
53  {
54  $dimensionConfiguration = $this->dimensionModeConfiguration->getDimensionConfiguration($dimensionsMode);
55 
56  $providers = [];
57  foreach ($dimensionConfiguration as $dimensionName) {
58  if (!isset($this->dimensionProviders[$dimensionName])) {
59  throw new \LogicException(
60  'Dimension Provider is missing. Cannot handle unknown dimension: ' . $dimensionName
61  );
62  }
63  $providers[] = clone $this->dimensionProviders[$dimensionName];
64  }
65 
66  return $this->multiDimensionProviderFactory->create(
67  [
68  'dimensionProviders' => $providers
69  ]
70  );
71  }
72 }
__construct(\Magento\Framework\Indexer\MultiDimensionProviderFactory $multiDimensionProviderFactory, DimensionModeConfiguration $dimensionModeConfiguration, array $dimensionProviders)