Узнать имя последнего скрипта, который включал текущий

Допустим, у меня есть 3 скрипта, основной/верхний, который включает второй, который, в свою очередь, включает третий. Нарисую, чтобы было понятно.

[скрипт верхнего уровня] -> [скрипт второго уровня] -> [скрипт третьего уровня]

Итак, есть ли простой способ получить имя «скрипта второго уровня» от третьего, может быть, есть какая-то предопределенная константа, знает ли третий скрипт, включенный вторым, своего родителя?

Пожалуйста, не называйте меня SCRIPT_NAME или PHP_SELF, я знаю, что это такое, и когда я использую его внутри последнего включенного скрипта, он показывает мне имя «скрипта верхнего уровня». Мне нужно имя родителя, а не дедушки!!!

Отвечает ли это на ваш вопрос? Получить имя файла, в котором запущен PHP, включая

Andrea Olivato 17.03.2022 11:27
debug_print_backtrace() покажет все скрипты, которые были включены
user3783243 17.03.2022 11:31

Ну, согласно документации, debug_print_backtrace() дает мне слишком много данных, мне это не нужно. get_included_files() довольно хорош... Я бы предпочел что-то еще более простое, но, думаю, это то, что у меня есть. Насчет ссылки Андреа, ну, если хорошенько поискать там, я, наверное, мог бы найти там фразу "Вы могли бы также возиться с get_included_files()", но если вы прочитали мой вопрос и этого парня, вы, вероятно, заметили разницу! Вот почему я сказал: «Пожалуйста, не делайте мне SCRIPT_NAME или PHP_SELF», что также означает: не делайте мне ФАЙЛ! Я не задавал тот же вопрос!

SizuNakomoto 17.03.2022 14:54

Так вот Андреа, я задал конкретный вопрос, по вашей ссылке общий вопрос, поэтому ответы там "может быть это" или "может быть то"...

SizuNakomoto 17.03.2022 15:10

@SizuNakomoto Вся работа программиста состоит в том, чтобы применять и адаптировать общие методы к конкретным сценариям, поэтому не следует ожидать, что точное решение будет каждый раз подаваться вам на тарелке. Можно сказать, что вы не смогли понять, как применить приведенные там ответы к вашему делу, но не нужно так возмущаться тем, что кто-то указал вам на то, что, по их мнению, могло бы вам помочь.

IMSoP 18.03.2022 12:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

get_included_files должен быть полезен. Поместите следующий код в файл уровня 2 или уровня 3:

$files = get_included_files();
list($parent) = array_slice($files, -2, 1);
echo $parent;

Было бы полезно объяснить, что именно здесь делает array_slice — вы полагаетесь на порядок возвращаемого массива? Или зная точную длину заранее?

IMSoP 18.03.2022 09:50

Срез массива, чтобы получить предпоследний элемент.

Salman A 18.03.2022 11:22

Да, но Зачем предпоследний элемент? Гарантирован ли порядок этого массива? Какие условия необходимы для работы этого кода? Как люди могли адаптировать его к другим ситуациям?

IMSoP 18.03.2022 12:04

@IMSoP да, в документации не упоминается гарантия порядка, но, похоже, она отлично справляется со своей задачей для приведенного выше конкретного примера. Если файлы включаются в другом порядке (например, последовательно), то необходим другой подход.

Salman A 18.03.2022 12:08

Другие вопросы по теме