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]; } }