* @link http://netmonsters.ru * @package Majestic * @subpackage View * @since 2010-02-25 * @version SVN: $Id$ * @filesource $URL$ */ class PHPView implements iView { protected $path = ''; protected $variables = array(); protected $extension = '.phtml'; protected $template = ''; public function __construct($config) { if (!isset($config['path'])) { throw new Exception('Configuration must have a "path".'); } $this->setPath($config['path']); } public function getPath() { return $this->path; } public function setPath($path) { $this->path = $path; } /** * @param ViewAction $object */ public function assignObject($object) { foreach (get_object_vars($object) as $name => $value) { $this->assign($name, $value); } } public function assign($name, $value = null) { $this->variables[$name] = $value; } public function fetch($template) { $this->template = $this->getTemplatePath($template); unset($template); extract($this->variables); ob_start(); if (!is_readable($this->template)) { ob_clean(); throw new Exception('Template "' . $this->template .'" not found.'); } include($this->template); return ob_get_clean(); } public function escape($var) { return htmlentities($var, ENT_QUOTES, 'UTF-8'); } protected function getTemplatePath($template) { return $this->path . $template . $this->extension; } }