带有变量的PHP模板类?
发布时间:2020-12-13 22:40:29 所属栏目:PHP教程 来源:网络整理
导读:我想让我的新项目更容易开发,我想要一个非常简单的模板引擎解决方案.我在网上四处看看,一切都太臃肿了,还是让我畏缩不前. 我的HTML文件将是这样的: html head title{PAGE_TITLE}/title /head body h1{PAGE_HEADER}/h1 pSome random content that is likely
我想让我的新项目更容易开发,我想要一个非常简单的模板引擎解决方案.我在网上四处看看,一切都太臃肿了,还是让我畏缩不前.
我的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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |