get_required_files 不是 php 内置函数,php 官方只提供 get_included_files(),它返回脚本启动后通过 include、require 及其_once 形式加载的所有文件绝对路径数组,主脚本自身也包含在内。

PHP 里根本没有 get_required_files 这个函数
直接说结论:get_required_files 不是 PHP 内置函数,也不会出现在任何官方文档中。你大概率是在某段代码里看到了它,或者误记了函数名——常见混淆对象是 get_included_files。
真正可用的是 get_included_files(),它返回所有已加载的文件路径
get_included_files() 是 PHP 原生函数,从脚本启动开始(含 include、require、include_once、require_once 加载的文件),按加载顺序返回一个绝对路径数组。
典型用法:
var_dump(get_included_files());
注意几点:
- 它不区分
require和include,只管是否成功加载过 - 不会包含通过
eval()、file_get_contents()或动态include(如include $path)在运行时才确定并执行的文件——除非那些语句确实被执行了 - 主脚本(如
index.php)也会被包含在返回结果的第一个元素里 - 在 CLI 模式下行为一致,但 Web SAPI 中若启用 OPcache,且文件被预加载(preload),
get_included_files()仍只返回实际被include/require触发的路径,不包括 preload 列表中的文件
为什么有人会写成 get_required_files?
这是典型的命名直觉错误。开发者看到 require 就以为对应函数叫 get_required_files,但 PHP 的设计逻辑是“已包含”(included),不是“被 require 的”。另外,有些老旧的自定义工具类或框架封装里可能定义过同名方法,但它属于业务代码,不是语言特性。
如果你在项目里搜到了 get_required_files,请立刻检查:
- 是不是某个类里的私有方法(比如
MyAutoloader::get_required_files()) - 有没有
function get_required_files() { return get_included_files(); }这样的别名定义 - 是否拼写错误,比如把
get_included_files少打了in
想精确追踪 require/require_once 加载了哪些文件?得自己埋点
get_included_files() 给的是结果快照,没法告诉你“哪次 require 加载了哪个文件”。如果真需要审计依赖链,推荐方式是:
- 用
set_error_handler()拦截E_COMPILE_ERROR或E_WARNING(针对require失败场景) - 在关键入口处覆盖
require行为:定义函数my_require($file),内部记录$file再调用原生require - 使用 Xdebug 的
xdebug_get_code_coverage()或更轻量的register_tick_function()配合debug_backtrace()抓取调用栈(性能代价高,仅调试用)
别指望靠一个不存在的函数解决依赖分析问题——PHP 的加载机制本身是扁平、无上下文的,所谓“require 链”只能靠人工约定或工具链补全。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











