如何在PHP的eval()的多次调用之间传递数据?

时间:2011-07-16 18:22:17

标签: php eval

我正在编写一个Wordpress插件,需要定制其部分输出以与页面缓存插件(W3 Total Cache)兼容。缓存插件用于缓存大部分页面并仅执行片段的技术是eval()这样的代码片段。

但是,由于我的插件可以在Wordpress模板中的几个地方调用,我需要保持我的代码的这些不同实例之间的状态为eval() - 执行。基本上我需要第一段代码来保存其他代码片段随后将使用的数据。

基本上我需要eval()中的代码才能访问eval()以外的数据。

有没有这样做的方法?

编辑:我应该补充说,eval()的每次执行都包含在一个被调用为preg_replace_callback()的回调的函数中,因此eval()中设置的任何变量都需要坚持这个也

1 个答案:

答案 0 :(得分:1)

eval()不会创建新的变量范围:

<?php

$foo = 'Hello, World!';
eval('var_dump($foo); $bar = 33;');
var_dump($bar);

...打印出来:

string(13) "Hello, World!"
int(33)

我说你的所有问题都是能够在函数中创建全局变量。您可以使用常用方法:global关键字或$GLOBALS数组。