какова цель require_once имя_каталога (__FILE__)?

Я использую библиотеку php, которая имеет этот код: require_once dirname(__FILE__) . '/config.php';

Из того, что я прочитал, dirname(__FILE__) указывает на текущий каталог.

Так не проще ли просто написать require_once 'config.php';?

Мое единственное предположение здесь заключается в том, что включение dirname(__FILE__) гарантирует, что функция require_once использует абсолютный, а не относительный путь.


person Leo Galleguillos    schedule 15.01.2014    source источник
comment
Вот почему - он обеспечивает абсолютный путь. Другие скрипты могут изменить рабочий каталог на chdir(), что может запутать включаемые пути. Аналогичным образом, при вызове из чего-то другого, кроме HTTP (например, CLI или cron), пути включения могут быть другими или рабочий каталог может быть другим.   -  person Michael Berkowski    schedule 16.01.2014
comment
Вместо этого можно просто использовать __DIR__...   -  person Niet the Dark Absol    schedule 16.01.2014
comment
По-видимому, __DIR__ доступен с php 5.3 и выше. Источники: 1, 2< /а>   -  person Marc.2377    schedule 07.10.2016


Ответы (2)


Да, вы правы – dirname(__FILE__) гарантирует, что Функция require_once использует абсолютный, а не относительный путь.

Константа __FILE__ представляет работающий скрипт. Он вернет полный путь и имя файла запущенного скрипта.

Например, если скрипт с именем database.init.php, который подключается из любой точки файловой системы, хочет включить скрипт database.class.php, который находится в том же каталоге, вы можете использовать:

require_once dirname(__FILE__) . '/database.class.php'; 
person mate64    schedule 15.01.2014

пример:

если ваш файл где-то включен, то по умолчанию он начнет поиск с пути к файлу, который включает ваш. в этом случае требование не будет работать для файлов, которые находятся рядом с вашим файлом

person Peter Bankuti    schedule 15.01.2014