diff --git a/src/Libs/View.php b/src/Libs/View.php index c2ce75a..0f82e5a 100644 --- a/src/Libs/View.php +++ b/src/Libs/View.php @@ -14,20 +14,36 @@ namespace Libs; class View extends Neuron { /** - * Función que "renderiza" las vistas + * Incluye el archivo. * - * @param string $viewName - * Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views - * - * @param array $params - * (opcional) Arreglo que podrá ser usado en la vista mediante $view ($param['index'] se usaría así: $view->index) - * - * @param string $viewPath - * (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/". + * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo. + * @param string $viewPath (opcional) Ruta donde se encuentra la vista. + * @param string $extension (opcional) Extensión del archivo. * * @return void */ - public static function render(string $viewName, array $params = [], string $viewPath = null): void { + private function include(string $viewName, string $viewPath = null, string $extension = 'php'): void { + $view = $this; + + if (isset($viewPath) && file_exists("$viewPath$viewName.$extension")) { + include("$viewPath$viewName.$extension"); + return; + } + + include(ROOT_DIR."/src/Views/$viewName.$extension"); + } + + /** + * Función que "renderiza" las vistas + * + * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo. + * @param array $params (opcional) Arreglo que podrá ser usado en la vista mediante $view ($param['index'] se usaría así: $view->index) + * @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/". + * @param string $extension (opcional) Extensión del archivo. + * + * @return void + */ + public static function render(string $viewName, array $params = [], string $viewPath = null, string $extension = 'php'): void { $instance = new View($params); $instance->html($viewName, $viewPath); } @@ -35,28 +51,49 @@ class View extends Neuron { /** * Renderiza las vistas HTML * - * @param string $viewName - * Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views + * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views + * @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/". + * @param string $extension (opcional) Extensión del archivo. * - * @param string $viewPath - * (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/". * @return void */ - public function html(string $viewName, string $viewPath = null): void { - $view = $this; + public function html(string $viewName, string $viewPath = null, string $extension = 'php'): void { + $this->include($viewName, $viewPath, $extension); + } - if (isset($viewPath) && file_exists($viewPath.$viewName.'.php')) { - include($viewPath.$viewName.'.php'); - return; - } + /** + * Renderiza código CSS. + * + * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views + * @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/". + * @param string $extension (opcional) Extensión del archivo. + * + * @return void + */ + public function css(string $viewName, string $viewPath = null, string $extension = 'css'): void { + header("Content-type: text/css"); + $this->include($viewName, $viewPath, $extension); + } - include(ROOT_DIR.'/src/Views/'.$viewName.'.php'); + /** + * Renderiza código Javascript. + * + * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views + * @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/". + * @param string $extension (opcional) Extensión del archivo. + * + * @return void + */ + public function js(string $viewName, string $viewPath = null, string $extension = 'js'): void { + header("Content-type: application/javascript"); + $this->include($viewName, $viewPath, $extension); } /** * Imprime los datos en Json. * - * @param object|array $data + * @param object|array $data Objeto o array que se imprimirá a JSON. + * * @return void */ public function json(object|array $data): void { @@ -67,7 +104,8 @@ class View extends Neuron { /** * Imprime los datos en texto plano * - * @param string $txt + * @param string $txt Contenido de texto. + * * @return void */ public function text(string $txt): void {