微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有变量的PHP模板类?

我想让我的新项目更容易开发,我想要一个非常简单的模板引擎解决方案.我在网上四处看看,一切都太臃肿了,还是让我畏缩不前.

我的HTML文件将是这样的:

<html>
    <head>
        <title>{PAGE_TITLE}</title>
    </head>
    <body>
        <h1>{PAGE_HEADER}</h1>
        <p>Some random content that is likely not to be parsed with PHP.</p>
    </body>
</html>

显然,我想用我用PHP设置的东西替换{PAGE_TITLE}和{PAGE_HEADER}.像这样:

<?PHP

    $pageElements = array(
                            '{PAGE_TITLE}' => 'Some random title.','{PAGE_HEADER}' => 'A page header!'
                         );

?>

我会使用类似str_replace的东西并将替换后的HTML加载到字符串中,然后将其打印到页面中?这就是我现在正在做的事情……有没有人有任何建议或方法我可以做得更好?

谢谢.

您当前的策略将起作用,并且非常简单. str_replace()是高效和干净的,您可以简单地循环它以用您的变量内容替换精确的标记匹配.但是,缺点是您必须首先将所有模板加载到字符串中,这可能效率很低.

另一种非常相似的方法是,您只需使用extract(). Extract将采用一组键/值对,并在本地范围内创建变量.如果在同一范围内包含()模板,那么您的变量就可以运行了.

像这样的东西:

function loadTemplate($template,$vars)
{
    extract($vars);
    include($template);
}

您的模板可能只是普通的PHP.

<html>
    <head>
        <title><?PHP echo $PAGE_TITLE ?></title>
    </head>
    <body>
        <h1><?PHP echo $PAGE_HEADER ?></h1>
        <p>Some random content that is likely not to be parsed with PHP.</p>
    </body>
</html>

(显然你可以使用短标签来减少模板的冗长,尽管我不愿意出于兼容性原因.)

那么你所要做的就是:

$pageElements = array(
                        'PAGE_TITLE' => 'Some random title.','PAGE_HEADER' => 'A page header!'
                     );
loadTemplate('file.phtml',$pageElements);

原文地址:https://www.jb51.cc/php/133258.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐