Crazy lens

一个简陋的 PHP View 适用于Swoole
仅支持 向模板传递变量 /** * 视图 * @param array $params...
扫描右侧二维码阅读全文
30
2020/06

一个简陋的 PHP View 适用于Swoole

仅支持 向模板传递变量

    /**
     * 视图 
     * @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;
    }
最后修改:2020 年 06 月 30 日 10 : 12 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论