Вот пример того, что я пытаюсь сделать:
<ul><?php include("list.php") ?></ul>
<?php if (PAGE_NAME is index.php) { //Do something } else { //Do something } ?>
Как я могу получить имя файла, который включает скрипт list.php (PAGE_NAME)? Я пробовал basename(__FILE__)
, но это дает мне list.php
.
$_SERVER["PHP_SELF"];
возвращает то, что вы хотите
Если вам действительно нужно знать, к какому файлу относится текущий, это решение:
$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>
в<ul> <?php $page_name = 'index'; include("list.php") ?> </ul>
<?php if ($pagename == 'index') { //Do something } else { //Do something } ?>
basename($_SERVER['PHP_SELF'])
решения basename($_SERVER['PHP_SELF'])
но я рекомендую установить strtolower(basename($_SERVER['PHP_SELF']))
чтобы проверить ошибки strtolower(basename($_SERVER['PHP_SELF']))
или index.php.
Но если вы хотите альтернативу, которую вы можете сделать:
<?php if (strtolower(basename($_SERVER['SCRIPT_FILENAME'], '.php')) === 'index'): ?>
.