在XML中嵌入PHP

时间:2009-12-29 05:24:10

标签: php xml

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

function processing_instruction($inParser, $inTarget, $inCode) {
if ($inTarget === 'php') {
eval($inCode);
}
}

3 个答案:

答案 0 :(得分:1)

  

“如果eval()是答案,你几乎肯定会问错误的问题。”
  -Rasmus Lerdorf,PHP的BDFL

     

您运行的代码是如此多样化,以至于无法将其视为一系列要按需包含的文件或XML-RPC样式函数调用?通过允许任意代码执行通常很少获得,并且在您考虑失去的数量之前就已经失去了。

如果这些文件可能有一些有限的,可预测的事情,我会强烈建议花时间创建一个半通用的XML-RPC接口(或至少一系列您可以在XML文件中指定的文件,然后可以在设置一些环境变量(具体取决于您的编码样式)之后即时包含并使用它。

创建eval()门户网站时,您所承担的风险数量几乎无数。

我曾考虑在这里提供一些例子,但XML-RPC ought to be a well enough known concept我这样做是完全没必要的。

答案 1 :(得分:0)

遗憾的是,eval()实际上是执行它的唯一方法。

除非......

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

如果是这种情况,您可以从xml中读取代码,将其写入.php文件,然后包含该代码。那肯定会慢一点,但如果你这样做,你只需要为每个XML文件做一次。之后,您可以运行纯PHP文件。

而且,就像其他人说的那样,你不能相信不值得信任的代码(呃)

答案 2 :(得分:0)

要了解“在XML中嵌入PHP”的使用,请参阅http://code.google.com/p/smallest-php-xml-xsl-framework/

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