在XML中嵌入PHP

在XML中嵌入PHP,php,xml,Php,Xml,我试图在XML中执行PHP代码,下面是代码是否有更好的执行方式,因为我们正在使用eval,据我所知,它会降低浏览器应该使用的性能80-85% function processing_instruction($inParser, $inTarget, $inCode) { if ($inTarget === 'php') { eval($inCode); } } “如果eval()是答案,那么您几乎肯定问错了问题。” -拉斯马斯·勒多夫,PHP的BDFL 您正在运行的代码是否千差万别,以至于无

我试图在XML中执行PHP代码,下面是代码是否有更好的执行方式,因为我们正在使用eval,据我所知,它会降低浏览器应该使用的性能80-85%

function processing_instruction($inParser, $inTarget, $inCode) {
if ($inTarget === 'php') {
eval($inCode);
}
}
“如果eval()是答案,那么您几乎肯定问错了问题。”
-拉斯马斯·勒多夫,PHP的BDFL


您正在运行的代码是否千差万别,以至于无法确定它是按需包含的一系列文件还是XML-RPC样式的函数调用?通过允许任意的代码执行,通常是很难获得的,这是在考虑到你将要失去的惊人数量之前。

如果这些文件可以做的事情数量有限且可预测,我强烈建议花点时间创建一个半通用的XML-RPC接口(或者至少是一系列文件,您可以在XML文件中指定这些文件,然后根据您的编码风格,在设置一些环境变量之后动态地包含这些文件)并使用它们

创建
eval()
门户时所冒的风险几乎数不清

我曾考虑在这里提供一些示例,但我这样做完全没有必要。

eval()不幸的是,实际上是执行它的唯一方法

除非

如果XML中的代码被多次执行。例如,您有一组包含代码的6个XML文件,有点像插件系统

如果是这种情况,您可以从xml中读取代码,将其写入.php文件,然后将其包含在内。这样肯定会比较慢,但如果这样做,则每个xml文件只需执行一次。之后,您可以运行纯php文件

而且,正如其他人所说,您不能相信不可信代码(duh)

来理解“在XML中嵌入PHP”的用法,请参见


这是一个完整的应用程序,使用XML+PHP(PHP生成XML)和XSLT作为模板系统。在MVC体系结构中,XML+PHP执行“MVC模型处理”,XSLT执行MVC视图。

请小心使用
eval()
-说真的。Eval不是由浏览器完成的,而是由服务器完成的——但是,除非您完全信任您的输入,否则它是非常不安全的。不清楚您在寻找什么。XML在哪里,PHP是如何嵌入其中的?$inTarget标识PHP文件,$inCode包含PHP代码。