2011-05-01 36 views
0

单挑:我没有可能重命名类或使用名称空间。任何方式来颠覆类重新宣布问题?没有命名空间

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

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

我试着读一个我创建的接口文件,它只是回应3个值,但实际上只是读取php代码而不是渲染值。

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

唯一能想到的就是使用ajax来做到这一点,但它似乎超级粗略。有没有一个普通的PHP版本?

回答

1

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

将包含文件加载到变量,然后改造它,最后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"); 
+0

OH男人! Sooooo关闭! exec完美工作。但是用户类使用会话数据,并且由于exec使用服务器来访问文件,所以会话是服务器的会话,而不是我。谢谢。我认为这是可能的。 – 2011-05-01 02:35:33

0

你可以tokenize整个文件,并通过它去“手动”找到你需要的值。