123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\View\Design\Fallback\Rule;
- use Magento\Framework\Component\ComponentRegistrar;
- use Magento\Framework\Component\ComponentRegistrarInterface;
- use Magento\Framework\Module\Dir\Reader;
- /**
- * Class with simple substitution parameters to values
- */
- class Simple implements RuleInterface
- {
- /**
- * Optional params for rule
- *
- * @var array
- */
- protected $optionalParams;
- /**
- * Pattern for a simple rule
- *
- * @var string
- */
- protected $pattern;
- /**
- * Constructor
- *
- * @param string $pattern
- * @param array $optionalParams
- */
- public function __construct(
- $pattern,
- array $optionalParams = []
- ) {
- $this->pattern = $pattern;
- $this->optionalParams = $optionalParams;
- }
- /**
- * Get ordered list of folders to search for a file
- *
- * @param array $params array of parameters
- * @return array folders to perform a search
- * @throws \InvalidArgumentException
- */
- public function getPatternDirs(array $params)
- {
- $pattern = $this->pattern;
- if (preg_match_all('/<([a-zA-Z\_]+)>/', $pattern, $matches)) {
- foreach ($matches[1] as $placeholder) {
- if (empty($params[$placeholder])) {
- if (in_array($placeholder, $this->optionalParams)) {
- return [];
- } else {
- throw new \InvalidArgumentException("Required parameter '{$placeholder}' was not passed");
- }
- }
- $pattern = str_replace('<' . $placeholder . '>', $params[$placeholder], $pattern);
- }
- }
- return [$pattern];
- }
- }
|