Если вы работаете с большим проектом, где подключается очень много файлов из различных папок, наверняка вам причиняло неудобство при указании относительных или абсолютных путей в require_once(). Эту проблему можно решить раз и навсегда, указав директории для поиска "php библиотек". Воспользуемся функцией ini_set(), чтобы указать путь поиска библиотек.
Допустим, в корне сайта у нас лежат:
index.php libs/test1.php libs/test2.php
Допустим в файле index.php нам нужно сделать “инклуд” файлов “test1.php” и “test1.php”, которые лежать в папке libs. Конечно, когда у нас всего 3 файла легко прописать в require_once() относительные или абсолютные пути. Давайте укажем директорию для поиска библиотек и подключим эти 2 файла без указания абсолютных и относительных путей:
<?php
ini_set('include_path', getenv(DOCUMENT_ROOT)."/libs");
require_once('test1.php');
require_once('test2.php');
?>
Благодаря указанию пути php без проблем находит библиотеки, лежащие в каталоге libs. При необходимости можно указать несколько каталогов, в которых php будет искать файлы при вызове функции require_once(). Продемонстрирую это ниже.
Наши файлы:
index.php libs1/test1.php libs2/test2.php
Теперь у нас библиотеки лежат в разных директориях. Добавим обе директории для поиска:
<?php
//Определяем, каким должен быть разделитель для путей
// ; - для Windows систем
// : - для *nix систем
$sep = getenv('COMSPEC')? ';' : ':';
//Определяем папку корня сайта
$dr = getenv('DOCUMENT_ROOT');
//Cклеиваем пути: путь 1 + разделитель + путь 2
$path = $dr.'/libs1'.$sep.$dr.'/libs2';
//Выполняем функцию ini_set()
ini_set('include_path', $path);
//Проверяем
require_once('test1.php');
require_once('test2.php');
?>
Вот и все. Удачи всем в разработках!
Frameworks.su Шпаргалка вебмастера