Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ReaderPool.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class ReaderPool implements ReaderInterface
14 {
18  protected $readers;
19 
23  protected $nodeReaders = [];
24 
30  protected $readerFactory;
31 
38  public function __construct(
40  array $readers = []
41  ) {
42  $this->readerFactory = $readerFactory;
43  $this->readers = $readers;
44  }
45 
52  public function addReader(Layout\ReaderInterface $reader)
53  {
54  foreach ($reader->getSupportedNodes() as $nodeName) {
55  $this->nodeReaders[$nodeName] = $reader;
56  }
57  return $this;
58  }
59 
65  public function getSupportedNodes()
66  {
67  return array_keys($this->nodeReaders);
68  }
69 
76  protected function prepareReader($readers)
77  {
78  if (empty($this->nodeReaders)) {
80  foreach ($readers as $readerClass) {
81  $reader = $this->readerFactory->create($readerClass);
82  $this->addReader($reader);
83  }
84  }
85  }
86 
94  public function interpret(Reader\Context $readerContext, Layout\Element $element)
95  {
96  $this->prepareReader($this->readers);
98  foreach ($element as $node) {
99  $nodeName = $node->getName();
100  if (!isset($this->nodeReaders[$nodeName])) {
101  continue;
102  }
104  $reader = $this->nodeReaders[$nodeName];
105  $reader->interpret($readerContext, $node, $element);
106  }
107  return $this;
108  }
109 }
interpret(Reader\Context $readerContext, Element $element)
addReader(Layout\ReaderInterface $reader)
Definition: ReaderPool.php:52
__construct(Layout\ReaderFactory $readerFactory, array $readers=[])
Definition: ReaderPool.php:38
$element
Definition: element.phtml:12