Get required files: примеры (PHP)

Работа с функцией get_required_files в PHP
Раздел: Включение файлов
get_required_files: array

Описание функции get_required_files

Функция get_required_files() в PHP возвращает индексированный массив, содержащий имена всех файлов, которые были включены в скрипт с помощью конструкций require, require_once, include и include_once. Она используется для отладки, анализа зависимостей скрипта или построения простых систем отслеживания включенных ресурсов.

Аргументы функции

Функция не принимает никаких параметров.

Когда используется

Основное применение get_required_files() связано с получением списка всех подключенных файлов во время выполнения. Это полезно при разработке фреймворков, автозагрузчиков или в ситуациях, когда необходимо убедиться в наличии определенных зависимостей.

Примеры использования get_required_files

Функция возвращает массив с полными путями к файлам.

Простой пример

Пример с подключением нескольких файлов:

<?php
// Файл: config.php
// Файл: functions.php
require_once 'config.php';
include 'functions.php';

$files = get_required_files();
print_r($files);
?>
Array
(
    [0] => /путь/к/config.php
    [1] => /путь/к/functions.php
)
Проверка подключения файла
<?php
include 'header.php';

$requiredFiles = get_required_files();
if (in_array(__DIR__ . '/header.php', $requiredFiles)) {
    echo 'Файл header.php был подключен.';
}
?>
Файл header.php был подключен.

Альтернативные функции в PHP

Функция get_included_files() является полным синонимом get_required_files() и возвращает идентичный массив. В документации PHP указано, что эти функции эквивалентны. С точки зрения использования, они взаимозаменяемы.

debug_backtrace()

Функция debug_backtrace() предоставляет более детальную информацию о стеке вызовов, включая файлы и строки, откуда были вызваны включения. Она полезна для глубокой отладки, но не возвращает простой список файлов.

get_required_files() и get_included_files() предпочтительнее для быстрого получения списка подключенных файлов. debug_backtrace() используют при необходимости анализа последовательности вызовов.

Альтернативы в других языках

Get required files в Python

В Python нет прямой аналогии. Для отслеживания импортированных модулей можно использовать словарь sys.modules.

import sys
print(list(sys.modules.keys()))
['sys', 'builtins', ...]
JavaScript (Node.js)

В Node.js объект require.cache содержит кэш всех загруженных модулей, ключами которого являются пути к файлам.

console.log(Object.keys(require.cache));
['/путь/к/модулю.js', ...]

Get required files в MySQL

В MySQL подобная функциональность отсутствует, так как это СУБД, а не язык общего назначения.

В отличие от PHP, где функция возвращает массив, в Python и JavaScript используются глобальные объекты системы модулей.

Типичные ошибки

Ожидание параметров

Ошибка возникает при попытке передать функции аргументы, так как она не принимает параметров.

<?php
// Неправильно
$files = get_required_files(true);
?>
Warning: get_required_files() expects exactly 0 parameters, 1 given
Использование после удаления в PHP 8

В PHP 8.0.0 функция была удалена. Ее вызов приводит к фатальной ошибке.

<?php
// Код для PHP 8 и выше
$files = get_required_files();
?>
Fatal error: Uncaught Error: Call to undefined function get_required_files()
Путаница с относительными путями

Функция возвращает полные абсолютные пути. Ошибки могут возникнуть при сравнении с относительными путями.

<?php
include 'myfile.php';
$files = get_required_files();
// Это сравнение, скорее всего, не сработает.
if (in_array('myfile.php', $files)) {
    echo 'Файл найден.';
}
?>
Файл не будет найден, так как в массиве полный путь.

История изменений функции

PHP 7.4.0

Функция get_required_files() была объявлена устаревшей (deprecated). Разработчикам рекомендовалось использовать get_included_files().

PHP 8.0.0

Функция была полностью удалена из ядра PHP. Любой ее вызов вызывает фатальную ошибку.

Расширенные примеры применения

Построение карты зависимостей скрипта
Пример php
<?php
require 'vendor/autoload.php';
include 'src/MyClass.php';

$allFiles = get_required_files();
echo '<div class="h4">Всего подключено файлов: ' . count($allFiles) . '</div>';
echo '<ul>';
foreach ($allFiles as $file) {
    echo '<li>' . htmlspecialchars($file) . '</li>';
}
echo '</ul>';
?>
Всего подключено файлов: 15
  • /путь/к/vendor/autoload.php
  • /путь/к/vendor/composer/autoload_real.php
  • ...
Проверка, был ли файл подключен через require
Пример php
<?php
// Файл critical.php должен быть подключен строго через require
require 'critical.php';

$required = get_required_files();
$criticalLoaded = false;
foreach ($required as $loadedFile) {
    if (strpos($loadedFile, 'critical.php') !== false) {
        $criticalLoaded = true;
        break;
    }
}
if (!$criticalLoaded) {
    exit('Критическая ошибка: required файл не загружен.');
}
?>
// Скрипт продолжает выполнение, если файл найден.
Исключение дубликатов при использовании *_once

Функция возвращает каждый файл только один раз, даже если он был подключен несколько раз с использованием include_once или require_once.

Пример php
<?php
require_once 'config.php';
require_once 'config.php'; // Второй вызов игнорируется

print_r(get_required_files());
?>
Array
(
    [0] => /путь/к/config.php
)

PHP get_required_files function comments

En
Get required files Alias of get_included_files