12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\View\File;
- use Magento\Framework\View\File;
- use Magento\Framework\View\File\FileList\CollateInterface;
- /**
- * Unordered list of view file instances with awareness of view file identity
- */
- class FileList
- {
- /**
- * Array of files
- *
- * @var File[]
- */
- protected $files = [];
- /**
- * Collator
- *
- * @var \Magento\Framework\View\File\FileList\CollateInterface
- */
- protected $collator;
- /**
- * Constructor
- *
- * @param \Magento\Framework\View\File\FileList\CollateInterface $collator
- */
- public function __construct(CollateInterface $collator)
- {
- $this->collator = $collator;
- }
- /**
- * Retrieve all view file instances
- *
- * @return File[]
- */
- public function getAll()
- {
- return array_values($this->files);
- }
- /**
- * Add view file instances to the list, preventing identity coincidence
- *
- * @param \Magento\Framework\View\File[] $files
- * @return void
- * @throws \LogicException
- */
- public function add(array $files)
- {
- foreach ($files as $file) {
- $identifier = $file->getFileIdentifier();
- if (array_key_exists($identifier, $this->files)) {
- $filename = $this->files[$identifier]->getFilename();
- throw new \LogicException(
- "View file '{$file->getFilename()}' is indistinguishable from the file '{$filename}'."
- );
- }
- $this->files[$identifier] = $file;
- }
- }
- /**
- * Replace already added view files with specified ones, checking for identity match
- *
- * @param File[] $files
- * @return void
- */
- public function replace(array $files)
- {
- $this->files = $this->collator->collate($files, $this->files);
- }
- }
|