request = new Request($params); $this->session = new Session(); $this->redirect = new Redirect($this->session); $this->logger = new Logger(); $this->_view = new View(); $this->_view->request = $this->request; $this->_view->session = $this->session; $this->_view->redirect = $this->redirect; $this->_view->logger = $this->logger; $this->session->set('_previous_url', $this->request->currentUrl()); } // final public function __get($name): mixed { return $this->_view->$name; } final public function __set($name, $value): void { $this->_view->$name = $value; } final public function __call($name, $arguments) { if (method_exists($this, $name)) { return call_user_func_array([$this, $name], $arguments); } throw new \BadMethodCallException("Method {$name} does not exist."); } // final public function setLayout(string $file): void { $this->_view->setLayout($file); } final public function setPath(string $path): void { $this->_view->setPath($path); } public function render(string $file): Response { // if (empty($file)) { // throw new \InvalidArgumentException("File name cannot be empty."); // } // $this->_view->setFile($file); // $this->_view->setLayout($this->layout); // $this->_view->setPath($this->path); // $this->_view->setParams($this->params); // $this->_view->setUrl($this->url); // $this->_view->setRequest($this->request); // $this->_view->setSession($this->session); // $this->_view->setRedirect($this->redirect); // $this->_view->setLogger($this->logger); return new Response($this->_view->render($file), 200, ['Content-Type' => 'text/html']); } } //Class