Получить текущее имя файла после включения в переполнение стека

Давайте представим, что у меня есть следующее
class.wrapper.php

// loop through events/ directory ($eventFile = filename of parsed file)
include $eventFile;

myevent.php

echo __FILE__;

myotherevent.php

echo __FILE__;

Оба эха возвращают одно и то же: class.wrapper.php, Есть ли способ получить настоящее имя файла? не тот, который включал код?

class.wrapper является частью зашифрованного API, который позволяет пользователю определять пользовательские файлы php в заданном каталоге для вызова пользовательского кода, когда данное событие запускается в основном приложении, поэтому я не могу редактировать основной класс, я должен делать это только путем редактирования файлы «событий»

0

Решение

Попробуйте функцию ниже

function GetInclude($file, $params = array())
{
extract($params);
include $file;
}
myevent.php
<?php GetInclude('class.wrapper.php', array('includerFile' => __FILE__)); ?>
myotherevent.php
<?php GetInclude('class.wrapper.php', array('includerFile' => __FILE__)); ?>
class.wrapper.php
echo $includerFile;
1

Другие решения

Если вы хотите получить настоящее имя, которое для вашего примера является полным путем для доступа к этому файлу, используйте функцию realpath("yourfile.extension"),

Я приведу вам этот короткий пример:

Допустим, у меня есть файл с именем index.php. Я хочу отобразить его полный путь. Вот код для этого:

<?php
echo realpath("index.php");
?>

В моем примере я сохранил свой файл в C: \ xampp \ htdocs \ test \ index.php. Результатом будет отображение этого точного пути.

Надеюсь, поможет.

0

По вопросам рекламы [email protected]