开发者

Any way to subvert class redeclaration issue? No namespaces

Heads up: I dont have the possibility to rename the classes or use name spaces for this.

Im looking for any crazy way to subvert class redeclaration issues in php. I actually only need 3 static variables from a web application, but the only way to get them requires including a file that declares a user class. However I already have a user class, so I get an error.

I tried to no avail to include the file in a class hoping it would isolate the included file - But no.

I tried reading an interface file I created that just echos the 3 values, but that actually just reads the php code and not the rendered values.

Is there anything like an opto-isolation system for code?

The only think I can think of is usi开发者_如何学编程ng ajax to do it, but it seems super sketchy. Is there a plain php version of this?


(Was a comment, but got too long.) Doesn't sound doable with your constraints. (You might need to show some code.) -- But if you are asking for a crazy way, and the option to rename the classes just applies to not editing the php script, then:

Load the include file into a variable, then transform it, and finally 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

Someone will probably comment on the advisability of eval... But it foremost depends on your code/situation if that's an applicable wacky workaround.

Alternatively you could invoke the user fetching code with a separate PHP process :

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


You could tokenize the whole file and go through it "by hand" to find the values you need.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜