включить в подкаталог, не зная пути файла, который будет включен - PullRequest
0 голосов
/ 17 мая 2011

У меня есть сайт с несколькими каталогами и подкаталогами. Я работаю только с одним каталогом: фреймворком и всеми его подкаталогами. Так что я работаю с /framework, /framework/Module1, /framework/Module1/Class1 и до framework/Module1/Class1/biology/microscope/microscopeTutorial/thispage.php. Я не знаю, как добраться до фреймворка.

Мне нужно добавить в мои файлы включение, которое будет включать файл внутри фреймворка, но я хочу иметь возможность использовать этот файл. Я нашел два варианта. $_SERVER['DOCUMENT_ROOT'] не работает, потому что я не в корневом каталоге. А добавление соответствующего количества ../../../ вручную в более чем тысячу страниц кажется неуклюжим, разочаровывающим и трата времени.

Я написал скрипт, который я могу запустить из Framework, который будет перебирать все каталоги и подкаталоги, которые добавят строку include('header.php'); во все файлы. Редактирование этого скрипта так, чтобы оно подходило для каждого подкаталога, почти так же сложно, как добавление их всех вручную.

Так как мне сказать всем файлам между framework и framework/Module1/Class1/biology/microscope/microscopeTutorial/ искать файл в framework?

Я думаю, что мне нужна единственная строка, которая говорит: продолжай смотреть вверх, пока не найдешь это, а затем остановись. Существует ли такая вещь?

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Я думаю, вам нужно установить это в функцию __autoload.__autoload (className) вызывается, когда используется класс, который не был загружен.

Это может быть что-то вроде этого

function __autoload($className) {
    //  pick file up from current, up directory tree
    $fname = $className.'.php';
    while (!file_exists($fname) {
        $fname = '../'.$fName; 
    }
    require_once $fname;
}

Примечание - код не проверен.

0 голосов
/ 18 мая 2011

Я попробовал пару разных вариантов ответа, который дал Ян, и попробовал несколько вариантов, используя функции dir.В конце концов я решил просто создать новую копию моего файла, добавить дополнительную ../ в соответствующую часть кода и запустить ее в подкаталоге.

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...