2013-03-23 6 views
1

Кто-нибудь может помочь мне получить базовое имя каталога, где вызвана функция? Я имею в виду: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.

Благодаря.

ответ

1

Используйте любой из PHP Магические константы

__DIR__ 
__FILE__ 

http://php.net/manual/en/language.constants.predefined.php

Или используйте Realpath ("./");

Чтобы определить собственные постоянные пути:

определяют ("MYPATH", Realpath ("./") "/ реж/реж /";

Вы можете назвать это MYPATH отовсюду это. код (файл).

 Смежные вопросы

  • Нет связанных вопросов^_^