tool_path = $path; } else { throw new Exception('View::__construct() $path directory does not exist '.$path); } } } /** * Set data sent from a controller. * * @param array data */ public function set_data($data) { if (!is_array($data)) { throw new Exception('View::set_data() $data must to be an array, you have sent a'.gettype($data)); } $this->data = $data; } /** * Set layout view sent from a controller. * * @param string $layout view */ public function set_layout($layout) { $this->layout = $layout; } /** * Set template view sent from a controller. * * @param string $template view */ public function set_template($template) { $this->template = $template; } /** * Render data to the template and layout views. */ public function render() { $content = $this->render_template(); $target = $this->tool_path.$this->layout.'.php'; if (file_exists($target)) { require_once $target; } else { throw new Exception('View::render() invalid file path '.$target); } } /** * It's used into render method for rendering data in the template and layout views. * * @return string Rendered template (as HTML, most of the time) */ private function render_template() { $target = $this->tool_path.$this->template.'.php'; if (file_exists($target)) { ob_start(); @extract($this->data, EXTR_OVERWRITE); //pass the $this->data array into local scope require_once $target; $content = ob_get_clean(); return $content; } else { throw new Exception('View::render_template() invalid file path '.$target); } } }