![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/View/Layout/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\View\Layout; use Magento\Framework\View\Layout; /** * Class Pool */ class ReaderPool implements ReaderInterface { /** * @var array */ protected $readers; /** * @var Layout\ReaderInterface[] */ protected $nodeReaders = []; /** * Object Manager * * @var \Magento\Framework\View\Layout\ReaderFactory */ protected $readerFactory; /** * Constructor * * @param Layout\ReaderFactory $readerFactory * @param array $readers */ public function __construct( Layout\ReaderFactory $readerFactory, array $readers = [] ) { $this->readerFactory = $readerFactory; $this->readers = $readers; } /** * Add reader to the pool * * @param Layout\ReaderInterface $reader * @return $this */ public function addReader(Layout\ReaderInterface $reader) { foreach ($reader->getSupportedNodes() as $nodeName) { $this->nodeReaders[$nodeName] = $reader; } return $this; } /** * {@inheritdoc} * * @return string[] */ public function getSupportedNodes() { return array_keys($this->nodeReaders); } /** * Register supported nodes and readers * * @param array $readers * @return void */ protected function prepareReader($readers) { if (empty($this->nodeReaders)) { /** @var $reader Layout\ReaderInterface */ foreach ($readers as $readerClass) { $reader = $this->readerFactory->create($readerClass); $this->addReader($reader); } } } /** * Traverse through all nodes * * @param Reader\Context $readerContext * @param Layout\Element $element * @return $this */ public function interpret(Reader\Context $readerContext, Layout\Element $element) { $this->prepareReader($this->readers); /** @var $node Layout\Element */ foreach ($element as $node) { $nodeName = $node->getName(); if (!isset($this->nodeReaders[$nodeName])) { continue; } /** @var $reader Layout\ReaderInterface */ $reader = $this->nodeReaders[$nodeName]; $reader->interpret($readerContext, $node, $element); } return $this; } }