PHP判断当前文件是否被引入
使用 get_included_files() 函数判断文件是否被引入
新建3个文件,分别为 a.php , b.php , c.php
内容如下
a.php
<?php
echo 'a.php:<br>'.__FILE__.'<br>';
include "b.php";
b.php
<?php
echo '<br><br>';
echo 'b.php:<br>'.__FILE__.'<br>';
print_r(get_included_files());
include "c.php";
c.php
<?php
echo '<br><br>';
echo 'c.php:<br>'.__FILE__.'<br>';
print_r(get_included_files());
输出内容如下
a.php:
/data/wwwroot/test/a.php
b.php:
/data/wwwroot/test/b.php
Array ( [0] => /data/wwwroot/test/a.php [1] => /data/wwwroot/test/b.php )
c.php:
/data/wwwroot/test/c.php
Array ( [0] => /data/wwwroot/test/a.php [1] => /data/wwwroot/test/b.php [2] => /data/wwwroot/test/c.php )
可以看出,此函数的作用是按顺序输出 当前访问的文件、被引入的文件(按引入顺序排列),数组的最后一项的值与魔术常量 __FILE__
的值完全相同,只需判断数组的第0个元素是否等于魔术常量 __FILE__
,相等即说明当前文件被直接访问而非被引入。