Задать вопрос

Как определить, из какого скрипта была вызвана функция?

Необходимо написать метод, который позволит включать внутри включаемых в нём файлов другие файлы, с относительными путями:

final protected static function includeRelatively(string $path)
{
    $full_path = __DIR__ . '/' . $path;
    include realpath($full_path);
}


Проблема в том, что __DIR__ в данном случае - папка скрипта, в котором определена функция. А мне надо использовать папку скрипта, из которого она вызвана. Как это сделать?
Второй аргумент просьба не предлагать, нужно более изящное решение.
  • Вопрос задан
  • 741 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Audiophile
@Audiophile Автор вопроса
final protected static function includeRelatively(string $path)
{
    $dir = dirname(debug_backtrace(0, 1)[0]['file']);
    $full_path = $dir . '/' . $path;
    include realpath($full_path);
}


Вот и все дела.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Ivanq
@Ivanq
Знаю php, js, html, css
$_SERVER["PHP_SELF"] ?
$_SERVER["SCRIPT_NAME"] ?
Возможно, $_SERVER["SCRIPT_FILENAME"] ?
[PHP] $_SERVER
Ответ написан
@dimabdc
В скрипте, который вызывает функцию определите root директорию
define('ROOTDIR', __DIR__);
и соответственно
$full_path = ROOTDIR . '/' . $path;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы