当我包含一个php文件/类时,我想得到类/包含的变量/元素,不知怎的,我可能会尝试反射来做到这一点?如果是这样,怎么样?
例如,我有一个名为foo.php的PHP类:
<?php
class foo
{
public function bar()
{
return "foobar";
}
}
?>
然后,在bar.php中,我想:
<?php
class bar
{
public function foo()
{
$included_resources = include("foo.php"); // Notice, $included_resources is an array
if (($key = array_search("foo", $included_resources)) != false) // "foo" can be any variable or class name
return $included_resources[$key]->bar();
}
}
$helloworld = new bar();
echo $helloworld->foo();
?>
结果:字符串值为&#34; foobar&#34;将在屏幕上显示
答案 0 :(得分:1)
首先,在包含文件之前将声明的变量存储在数组中。然后做包含。然后再次将声明的变量存储在另一个数组中。然后只需检查差异:
$declared_vars_before = get_defined_vars();
include 'another_file.php';
$declared_vars_after = get_defined_vars();
foreach ($declared_vars_after as $value) {
if (!in_array($value, $defined_vars_before)) {
echo $value . '<br>';
}
}
与类相同,但使用get_declared_classes而不是get_defined_vars。