有什么方法可以颠覆类重新声明问题?没有名称空间

时间:2011-05-01 00:50:58

标签: php class

抬头:我没有可能重命名类或使用名称空间。

我正在寻找任何疯狂的方法来破坏PHP中的类重新声明问题。实际上我只需要来自Web应用程序的3个静态变量,但获取它们的唯一方法是需要包含一个声明用户类的文件。但是我已经有了一个用户类,所以我收到了一个错误。

我试图在一个类中包含该文件,希望它能隔离包含的文件 - 但是没有。

我尝试读取我创建的接口文件只回显了3个值,但实际上只读取了PHP代码而不是渲染值。

是否有类似代码的光隔离系统?

我能想到的唯一想法是使用ajax来做,但它似乎超级粗略。这是一个简单的PHP版本吗?

2 个答案:

答案 0 :(得分:1)

(是评论,但是太长了。)你的约束听起来不可行。 (您可能需要显示一些代码。) - 但是如果您要求一种疯狂的方式,并且重命名类的选项仅适用于不编辑php脚本,那么:

将include文件加载到变量中,然后对其进行转换,最后再使用eval:

$source = file_get_contents("user.php");
$source = str_replace("class user", "class workaround_123", $source);
eval($source); // will give you a workaround_user instead of class conflict

有人可能会评论eval的可行性......但是,如果这是一个适用的古怪的解决方法,它最重要的取决于你的代码/情况。

或者,您可以使用单独的PHP进程调用用户提取代码:

exec("QUERY_STRING=user=123 php-cgi user.php");

答案 1 :(得分:0)

您可以tokenize整个文件并“手动”查看,找到您需要的值。