setFilename($file, $dir); } if ($data !== null) { // Добавить значения к текущим данным $this->_data = $data + $this->_data; } } /** * @param string $file * @param string $dir * @return View * @throws MyException */ public function setFilename(string $file, string $dir = ''): View { if ($dir === '') { throw new MyException("Параметр dir не передан в View::setFilename для файла '$file'"); } if (($path = Core::findFile($dir, $file, 'html')) === false) { throw new MyException("При запросе view файл $dir/$file не найден"); } // Store the file path locally $this->_file = $path; return $this; } /** * @throws MyException */ public function render(): string { if (empty($this->_file)) { throw new MyException('Нужно установить файл для использования во view перед преобразованием'); } ob_start(); extract($this->_data, EXTR_SKIP); try { include $this->_file; return ob_get_clean(); } catch (Throwable $e) { ob_end_clean(); throw new MyException( "Ошибка при render файла: {$e->getFile()} на строке {$e->getLine()} - {$e->getMessage()}", 0, $e ); } } }