Подскажите, как построить дерево зависимостей файлов PHP

M
На сайте с 02.01.2013
Offline
38
1444

Возможно кто пользуется готовым решением.. Есть более 250 файлов проекта в которых штук около 50-100 мусор нигде уже не участвующий, но определить на глаз, "нужен" файл или нет, не могу - то есть раньше он подключался в код, а потом перестал. вот их бы и понаходить :) ну или дерево построить для наглядности..

[umka]
На сайте с 25.05.2008
Offline
456
#1

Очевидно, скриптом?

Взять список всех файлов, открыть каждый из них, выдрать имена включаемых файлов, выкинуть из списка.

Лог в помощь!
AutoBlogger
На сайте с 05.10.2011
Offline
115
#2

Там и дерево не нужно. Взять главный файл и пройтись от него рекурсией по инклудам. В результате останется список того, что нужно. Остальное можно смело тереть.

🪄 www.cyberseo.net - плагин для создания автоблогов под WordPress, с поддержкой искусственного интеллекта OpenAI GPT-4, Anthropic Claude, Google Gemini Pro, DALL·E 3 и Stable Diffusion XL | 📣 Импорт RSS / XML / JSON/ CSV / HTML в WooCommerce: https://bit.ly/3EyYQp4
Dreammaker
На сайте с 20.04.2006
Offline
570
#3
M
На сайте с 02.01.2013
Offline
38
#4

Dreammaker, не инклудом одиным жив программист-php ))

$html_top_in_block = file_get_contents($path_inc.'/unit/block_top_in.shab');

по сути нужно не выборочные списки составлять, а взять список всех файлов и к ним прописать список всех, в которых идёт упоминание - банальный поиск вхождения `имя_файла` -> поиск по всем файлам проекта - и так по всему списку.

Как такое реализовать на виндовой машине win7 а не на паблик сервере? для отладки пользую Денвер 3

более 200 файлов вручную сканить не торт :(

--------------

PS: снова delphi 7 ставить (( может есть что поновее и по проще?

D
На сайте с 29.06.2010
Offline
147
#5

А если инклуд сделан так:

$position="top";

$html_top_in_block = file_get_contents($path_inc.'/unit/block_'. $position .'_in.shab');
M
На сайте с 02.01.2013
Offline
38
#6
dpcenter:
А если инклуд сделан так:

плохо помню, но вроде таким извратом не занимался :) а вот file_get_contents у меня через раз ))

TO
На сайте с 21.09.2007
Offline
170
#7

Есть еще такая магия, как autoload - там файл инклудится по определенным параметрам при инициализации класса. Если она реализована, на основе кода цепочку инклюдов не проследишь.

M
На сайте с 02.01.2013
Offline
38
#8
t_o_x_a:
Есть еще такая магия, как autoload - там файл инклудится по определенным параметрам при инициализации класса. Если она реализована, на основе кода цепочку инклюдов не проследишь.

вы отклоняетесь :) у меня есть инклуды и file_get_contents - это вся задача

написал экзешку на делфях которая сканит и находит зависимости в один уровень типа "этот файл упоминается вот в этих" + "этот не упоминается нигде вообще" - это уже что-то ощутимое))

M
На сайте с 02.01.2013
Offline
38
#9
dpcenter:
А если инклуд сделан так:

$position="top";

$html_top_in_block = file_get_contents($path_inc.'/unit/block_'. $position .'_in.shab');

и к тому же такое бывает нужно редко. оказывается и у меня есть подобная конструкция, о чём я узнал после того как получил в списке неиспользуемых очевидно используемые файлы списком unit/block_бла-бла.shab

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#10

Можно рекурсивно использовать функцию fileatime() - не факт что сработает, но стоит попробовать.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий