2024年PHP开发者大会日本站

get_included_files

(PHP 4, PHP 5, PHP 7, PHP 8)

get_included_files返回包含或引入的文件名数组

描述

get_included_files(): array

获取所有使用includeinclude_oncerequirerequire_once包含的文件名。

参数

此函数没有参数。

返回值

返回所有文件名数组。

最初调用的脚本被认为是“包含文件”,因此它将与include及其相关函数引用的文件一起列出。

多次包含或引入的文件在返回的数组中只出现一次。

示例

示例 #1 get_included_files() 示例

<?php
// 此文件是 abc.php

include 'test1.php';
include_once
'test2.php';
require
'test3.php';
require_once
'test4.php';

$included_files = get_included_files();

foreach (
$included_files as $filename) {
echo
"$filename\n";
}

?>

上述示例将输出

/path/to/abc.php
/path/to/test1.php
/path/to/test2.php
/path/to/test3.php
/path/to/test4.php

参见

添加笔记

用户贡献笔记 6 条笔记

keystorm :at: gmail dotcom
20年前
从PHP5开始,此函数似乎返回一个数组,其第一个索引是所有后续脚本包含的脚本。
如果index.php包含b.php和c.php并调用get_included_files(),则返回的数组如下所示

index.php
a.php
b.php

而在PHP<5中,数组将是

a.php
b.php

如果您想知道哪个脚本包含当前脚本,您可以使用$_SERVER['SCRIPT_FILENAME']或任何其他类似的服务器全局变量。

如果您还希望确保当前脚本正在被包含而不是独立运行,则应评估以下表达式

__FILE__ != $_SERVER['SCRIPT_FILENAME']

如果此表达式返回TRUE,则当前脚本正在被包含或引入。
yarco dot w at gmail dot com
17年前
如果您有一个不想被其他脚本包含的主PHP脚本,您可以使用此函数。例如

main.php
<?php
function blockit()
{
$buf = get_included_files();
return
$buf[0] != __FILE__;
}

blockit() and exit("您不能将主文件作为脚本的一部分包含在内。");

print
"OK";
?>

因此其他脚本无法包含main.php来修改其内部全局变量。
D
4年前
现有文档可能没有清楚地说明返回的列表也包含嵌套的包含文件。

也就是说,如果A.php包含B.php,而B.php包含C.php,则在A.php内部调用get_included_files()时返回的结果将包含'C.php'。
RPaseur at NationalPres dot org
18年前
通常情况下,您的里程可能会有所不同。我尝试了__FILE__和SCRIPT_FILENAME的比较,发现:

SCRIPT_FILENAME: /var/www/cgi-bin/php441
__FILE__: /raid/home/natpresch/natpresch/RAY_included.php

作为替代方案

count(get_included_files());

当脚本是独立脚本时返回1,当脚本被包含时始终返回大于1的值。
donikuntoro at integraasp dot com
13年前
此函数旨在过滤已包含的文件

<?php
function setIncludeFiles($arrayInc = array()){
$incFiles = get_included_files();
if((
count($arrayInc)>0)&&(count($incFiles)>0)){
$aInt = array_intersect($arrayInc,$incFiles);
if(
count($aInt)>0){
return
false;
}elseif(
count($aInt)<1) {
foreach(
$arrayInc as $inc){
if(
is_file($inc))
include(
$inc);
else{
return
false;
}
}
}
}else{
return
false;
}
}
?>

用法

<?php
$toBeInclude
= array('/data/your_include_files_1.php',
'/data/your_include_files_2.php',
'/data/your_include_files_3.php',
);
setIncludeFiles($toBeInclude);
?>

如果出现错误,则返回false。
Aurelien Marchand
2年前
这是一种模拟Python的'__name__ = "__main__"'的绝佳方法

<?php
if(get_included_files()[0] === __FILE__) doStuff();
?>
To Top