При использовании PHP include
, как я могу узнать, какой файл вызывает include
? Короче говоря, что такое имя файла родительского файла?
Простым способом является назначение переменной в родительском файле (до включения), а затем ссылка на эту переменную во включенном файле.
Родительский файл:
$myvar_not_replicated = __FILE__; // Make sure nothing else is going to overwrite include 'other_file.php';
Включенный файл:
if (isset($myvar_not_replicated)) echo "{$myvar_not_replicated} included me"; else echo "Unknown file included me";
Вы также можете get_included_files()
с get_included_files()
или debug_backtrace()
и найти событие, когда и где файл был включен, но это может стать немного грязным и сложным.
$fileList = get_included_files(); $topMost = $fileList[0]; if ($topMost == __FILE__) echo 'no parents'; else echo "parent is $topMost";
Я думаю, что это должно дать правильный результат, когда есть один родитель.
Под этим я подразумеваю ситуацию, когда родитель не является обязательным или включенным файлом.
Поздний ответ, но …
Я проверяю текущее родительское имя файла, используя:
$_SERVER["SCRIPT_NAME"] // or $_SERVER["REQUEST_URI"] // (with query string)
В родительском файле добавьте эту строку, прежде чем включать дочерний файл:
$_SESSION['parent_file'] = $_SERVER['PHP_SELF'];
А затем в дочернем файле прочитайте переменную сеанса:
$parent_file = $_SESSION['parent_file']