仅支持 向模板传递变量
/**
* 视图
* @param array $params 模板变量
* @param string $method 视图模板
* @return mixed|string
*/
public static function view(array $params = [], $method = ''): string
{
// 利用堆栈追踪回溯
$array = debug_backtrace();
$file = $array[0]['file'] ?? '';
$method = $method ?: ($array[1]['function'] ?? '');
$fileDir = rtrim($file, '.php');
$viewFile = str_replace('Controller', 'View', $fileDir . DS . $method) . '.phtml';
if (!file_exists($viewFile)) {
return "<h1 > {$method} 404 </h1>";
}
// 捕获 模板 html 赋值到变量
ob_start();
include $viewFile;
$html = ob_get_contents();
ob_end_clean();
if ($params) {
// 批量赋值
foreach ($params as $k => $v) $$k = $v;
// 替换变量
preg_match_all('/{(.*)}/i', $html, $list);
foreach ($list[1] as $var) {
$tmp = $$var ?? '';
$html = str_replace('{' . $var . '}', $tmp, $html);
}
}
return $html;
}