You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.5 KiB

<?php
/**
* @copyright NetMonsters <team@netmonsters.ru>
* @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($path)
{
$this->setPath($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 (!(include($this->template)) == 'OK') {
ob_clean();
throw new Exception('Template "' . $this->template .'" not found.');
}
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;
}
}