Получить имя файла, который включает PHP-скрипт
вот пример того, что я пытаюсь сделать:
.в PHP<ul><?php include("list.php") ?></ul>
список.в PHP
<?php
if (PAGE_NAME is index.php) {
//Do something
}
else {
//Do something
}
?>
как я могу получить имя файла, который включает в себя список.PHP скрипт (PAGE_NAME)? Я пробовал basename(__FILE__)
, но это дает мне list.php
.
6 ответов
Если вы действительно нужно знать, из какого файла был включен текущий-это решение:
$trace = debug_backtrace();
$from_index = false;
if (isset($trace[0])) {
$file = basename($trace[0]['file']);
if ($file == 'index.php') {
$from_index = true;
}
}
if ($from_index) {
// Do something
} else {
// Do something else
}
в случае, если кто-то попал сюда из поисковой системы, принятый ответ будет работать, только если скрипт находится в корневом каталоге сервера, так как PHP_SELF-это имя файла с путем относительно корня сервера. Таким образом, универсальным решением является
basename($_SERVER['PHP_SELF'])
также имейте в виду, что это возвращает верхний скрипт, например, если у вас есть скрипт и включить файл, а затем в включенный файл включить другой файл и попробовать это, вы получите имя первого скрипта, а не второй.
в коде, в том числе list.php
, прежде чем включить, вы можете установить переменную с именем $this_page
а то list.php
можно увидеть тест на значение $this_page
и действовать соответственно.
возможно, вы можете сделать что-то вроде следующего:
<ul>
<?php
$page_name = 'index';
include("list.php")
?>
</ul>
список.в PHP
<?php
if ($pagename == 'index') {
//Do something
}
else {
//Do something
}
?>
решение basename($_SERVER['PHP_SELF'])
работает, но я рекомендую ставить strtolower(basename($_SERVER['PHP_SELF']))
для проверки индекса.индекс PHP' или'.ошибки php.
но если вы хотите альтернативу вы можете сделать:<?php if (strtolower(basename($_SERVER['SCRIPT_FILENAME'], '.php')) === 'index'): ?>
.