从父文件运行PHP函数

时间:2015-10-28 16:01:09

标签: php function php-include

我需要一些帮助来解决我面临的问题。 我在网上看,但我发现了更多通常无法解决的问题。

主要思想是从父文件中运行PHP函数,如get_included_files()get_defined_vars()debug_backtrace()

在我的代码中我有一个PHP文件,让我们称之为A.php,其中包含另一个PHP文件,让我们说B.php。 我想在B.php中运行例如get_included_files()来获取A.php中包含的文件。

类似于parent ::但是对于PHP文件而不是面向对象编程。 我知道这可能是一个安全漏洞,这就是为什么我不确定它是否可能,但我要求确定。

为了尽可能最清楚,这是一个例子:

a.php只会

include 'B.php';
include 'C.php';
include 'D.php';

get_includes();

B.php

function get_includes()
{
    $included_files = get_included_files();
    print_r($included_files);
}

我需要$included_files var来包含array('B','C','D')。 我的问题是PHP函数从它启动的文件中获取包含的文件,而不是从父文件中获取(使用此代码,$included_files为空)。

3 个答案:

答案 0 :(得分:1)

php是一个解释器,解释将是字符串。因此文件a.php尝试按以下顺序包含文件:

include 'С.php';
include 'D.php';
include 'B.php';

答案 1 :(得分:0)

考虑一下这个例子:

a.php只会

function a(){
    echo "a";
}

function b(){
    echo "b";
}

b.php

include "a.php";

echo a();//echoes a

echo b();//echoes b

答案 2 :(得分:0)

我不知道它是否可以解决您的问题,但您也可以在父文件中执行这些功能,将结果分配给变量,并在包含的文件中读取此变量。

例如:

a.php只会

$a = 1;

$files = get_included_files();
$vars = get_defined_vars();

include 'B.php';

$b = 2;

$files = get_included_files();
$vars = get_defined_vars();

include 'C.php';

B.php

echo 'B<br /><pre>';
print_r($files);
print_r($vars);
echo '</pre>';

C.php

echo '<br />C<br /><pre>';
print_r($files);
print_r($vars);
echo '</pre>';

它将提供如下所示的输出:

B

Array
(
    [0] => A.php
)
Array
(
    [...]
    [a] => 1
    [files] => Array
        (
            [0] => A.php
        )
)


C

Array
(
    [0] => A.php
    [1] => B.php
)
Array
(
    [a] => 1
    [files] => Array
        (
            [0] => A.php
            [1] => B.php
        )
    [vars] => Array
        [...]
    [b] => 2
)

请注意,您无法获得有关调用函数后包含/定义的文件和变量的信息,因此无论如何从B.php中您都无法知道C.php和D.php将在稍后加入。