首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为从XML加载的模板文件以DOMDocument形式运行PHP

问为从XML加载的模板文件以DOMDocument形式运行PHP
EN

Stack Overflow用户
提问于 2018-09-06 17:03:21
回答 1查看 240关注 0票数 0

我正在编写自己的MVC框架,它基于指定要加载哪个模板文件的layout.xml文件加载模板文件。通过这种方式,可以通过XML和新(phtml)模板文件轻松地扩展或修改现有页面。

为此,我使用DOMDocument对象将模板文件加载到正确的HTML元素中。现在,这是正常工作的,但是我刚刚意识到,在将模板文件的PHP内容转换为DOMDocument时,只需将其解释为普通的HTML。

我该如何正确地处理这件事?我想我应该使用eval()从模板文件中执行DOMDocument,然后将结果插入到DOMDocument对象中。然而,我宁愿避免使用eval,因为它的形象不好(危险和沉重?)不过,这似乎正是我要找的东西。

如果有人能在这个问题上给我一些建议,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-09-09 06:21:15

我认为Twig将模板转换为PHP文件,然后运行PHP文件来生成输出,您可以执行类似的过程。这也允许您缓存生成的模板,这将减少解析时间。所以,与其执行PHP的各个片段,不如做一些类似于.

代码语言:javascript
复制
// Create temporary file (must have .php extension)
$fh = fopen ( "a.php", "w");
// Write out generated HTML
fwrite($fh, '<SomeTag>Content</SomeTag>'.PHP_EOL);
// Add in PHP code where necessary
fwrite($fh, '<?php'.PHP_EOL);
fwrite($fh, '$a="1";'.PHP_EOL);
fwrite($fh, 'echo $a;'.PHP_EOL);
fwrite($fh, '?>'.PHP_EOL);
fclose($fh);

// Run the generated file
require "a.php";

如果您想要捕获输出,那么使用输出缓冲..。

代码语言:javascript
复制
ob_start();
require "a.php";
$html = ob_get_clean();

echo $html;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52209036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档