Вывод файлов PHP, к которым не подключен другой файл PHP

  1. Создается файл test_include.php в корневой директории сайта
  2. Он подключается к index.php при помощи include('test_include.php');
  3. В другие PHP-файлы вставляется print_r(get_included_files());
  4. Затем, когда я обращаюсь к этим файлам через браузер, выводится список подключенных к ним файлов, в которых должен быть test_include.php, вот так: Array ( [0] => /var/www/html/index.php [1] => /var/www/html/test_include.php)

Как получать имена файлов, к которым test_include.php не подключен? Нужно автоматизировать данный процесс.


Ответы (1 шт):

Автор решения: Вадим Александру
// получаем рекурсивно все файлы (тут желательно сделать проверку на расширение файл *.php)
function getFiles($dir, &$results = array()) {
    $files = scandir($dir);

    foreach ($files as $key => $value) {
        $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
        if (!is_dir($path)) {
            $results[] = $path;
        } else if ($value != "." && $value != "..") {
            getFiles($path, $results);
            $results[] = $path;
        }
    }

    return $results;
}


function isValid($text)
{
    // тут можно еще что-нибуь придумать, чтобы исключить файлы в которые к примеру есть
    // закоментированый инклуд, удалить все пробелы и добавить еще шаблоны для поиска типу require_once ...
    $mask = "include('test_include.php');";

    return false === strpos($text, $mask);
}


$response = [];

foreach (getFiles('php-files') as $path)
{
    $text = file_get_contents($path);

    if(isValid($text)) {
        $response[] = $path;
    }

}


print_r(
    $response
);
→ Ссылка