PHP - 获取包含文件中定义的变量

时间:2017-02-12 03:21:02

标签: php zend-framework

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

1 个答案:

答案 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