Кто-нибудь может помочь мне получить базовое имя каталога, где вызвана функция? Я имею в виду:PHP Get Basename of File Где вызвана функция
файл /root/system/file_class.php
function find_file($dir, $file) {
$all_file = scandir($dir);
....
}
function does_exist($file) {
$pathinfo = pathinfo($file);
$find = find_file($pathinfo["dirname"], $pathinfo["basename"]);
return $find;
}
файл /root/app/test.php
$is_exist = does_exist("config.php");
Под/корень/приложение у меня есть файл «конфигурации. php, system.php ". Вы знаете, как получить каталог, в котором вызывается does_exist()
? В функции find_file()
аргумент $dir
важен, так как scandir()
нужен путь к каталогу функции для сканирования. Я имею в виду, когда я хочу проверить файл config.php
, мне не нужно писать /root/app/config.php
. Если я не предоставил полный путь в аргументе $file
, $ pathinfo ["dirname"] будет "."
. Я пытаюсь использовать dirname(__file__)
в функции file_find()
, но он возвращает каталог /root/system
не /root/app
, где находится каталог вызываемой функции does_exist()
.
Мне нужна эта функция, так как я не могу использовать функцию file_exists()
.
Найдено Solutions:
Я использую debug_backtrace()
получить последний файл и номер строки, где пользователи вызова функции. Например:
function read_text($file = "") {
if (!$file) {
$last_debug = next(debug_backtrace());
echo "Unable to call 'read_text()' in ".$last_debug['file']." at line ".$last_debug['line'].".";
}
}
/home/index.php
16 $text = read_text();
Выход образца: Unable to call 'read_text()' in /home/index.php at line 16.
Благодаря.