在fun
我有一个非常具体的情况。
想象一下,我有以下代码:
的index.php
\/\/.*\n {}
other.php
PHP
然后想象我没有文件的源代码:<?
$a = "1";
$b = "2";
include("other.php");
$c = "3";
$d = "4";
?>
(这看起来很奇怪但是假设)。然后,我想从<?
$x = "11";
$y = "12";
?>
的源代码中获取有关other.php
上定义的变量的信息,或者源代码。我的要求不允许我打开文件的内容:“other.php”。
我是否可以在调用之前和之后存储系统状态:index.php
然后执行状态减法以查看更改内容?
不幸的是,我无法操纵文件:other.php
。
[UPDATE]
我的问题是,因为我有一个带有编码文件的网站(在上面的代码上是:other.php
)。该编码使用other.php
完成。 Zend在这里做的是将编码代码放在以下代码片段的底部,并在某些时候将其转换为PHP源代码,然后将其作为源代码执行。我没有原始的源代码,只有编码的代码。
然后我想以某种方式获取该文件的源代码。
这里的问题是,这个代码可以定义函数,带静态赋值的变量和带动态赋值的变量(从函数结果中获取它的值)。
我的理想选择是获取源代码。
网站运行正常,因此解码正确完成。
other.php
答案 0 :(得分:0)
这可能会有所帮助(请注意,我刚刚直接添加了include的内容,因此代码可以运行一些结果......在这种情况下仍然只有你的include):
<?php
$a = 1;
$b = 2;
$preVars = null; // Define it so it doesn't show up later
$preVars = array_keys(get_defined_vars());
// Normally included, just here for tests sake
$x = 10;
$y = 11;
// End of your include
$postVars = array_keys(get_defined_vars());
$c = 3;
$d = 4;
$diff = array_diff($postVars, $preVars);
echo "New Variables:\n";
foreach($diff as $d)
echo "- \$".$d."\n";
输出:
New Variables:
- $x
- $y