76 lines
1.7 KiB
PHP
76 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace ctiso\View;
|
|
|
|
/**
|
|
* Шаблон для PHP
|
|
*/
|
|
class Plain extends \stdClass
|
|
{
|
|
/** @var string */
|
|
protected $document;
|
|
/** @var array */
|
|
protected $values = [];
|
|
|
|
/**
|
|
* Конструктор
|
|
* @param string $document шаблон
|
|
*/
|
|
public function __construct ($document)
|
|
{
|
|
$this->document = $document;
|
|
}
|
|
|
|
/**
|
|
* Установка значения
|
|
* @param string $key ключ
|
|
* @param mixed $value значение
|
|
*/
|
|
public function set($key, $value): void
|
|
{
|
|
$this->values[$key] = $value;
|
|
}
|
|
|
|
/**
|
|
* Импорт значений
|
|
* @param array $list список значений
|
|
*/
|
|
public function import($list): void
|
|
{
|
|
$this->values = array_merge($this->values, $list);
|
|
}
|
|
|
|
/**
|
|
* @param string $key ключ
|
|
* @param mixed $value значение
|
|
*/
|
|
public function __set($key, $value): void
|
|
{
|
|
$this->set($key, $value);
|
|
}
|
|
|
|
/**
|
|
* Выполнение шаблона
|
|
* @return string
|
|
*/
|
|
public function execute()
|
|
{
|
|
$result = $this->values;
|
|
return self::getTemplateContent ($this->document, $result);
|
|
}
|
|
|
|
/**
|
|
* Получение содержимого шаблона
|
|
* @param string $document шаблон
|
|
* @param array $result результат
|
|
* @return string содержимое шаблона
|
|
*/
|
|
static function getTemplateContent(string $document, $result): string
|
|
{
|
|
ob_start ();
|
|
include ($document);
|
|
$content = ob_get_contents ();
|
|
ob_clean ();
|
|
return $content;
|
|
}
|
|
}
|