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
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;
|
|
}
|
|
}
|