Я недавно натолкнулся на магическую константу __DIR__
при решении вопроса о включении скриптов в включены скрипты.
После некоторого чтения я не мог найти причину, чтобы не использовать __DIR__
префикс каждого пути в require
или же include
заявление.
Итак, мои вопросы — есть ли какие-либо известные недостатки / потенциальные побочные эффекты, которые следует учитывать при использовании __DIR__ . '/path/to/script.php'
по сравнению с использованием относительных путей?
Благодарю.
PHP имеет два режима включения файлов: на основе относительных путей и на основе абсолютных путей:
require 'foo/bar.php';
require '/var/www/foo/bar.php';
При использовании относительных путей поиск выполняется на основе PHP включить путь, который в основном список каталогов PHP будет искать вещи, похожие на UNIX $PATH
переменная окружения. Iif вы используете PEAR или другие инсталляторы модулей, которые устанавливают модули и файлы PHP в некоторые внешние каталоги, тогда имеет смысл использовать этот механизм для поиска и включения внешних модулей. Вы можете даже использовать этот механизм для файлов в вашем собственном приложении. Это дает вам больше свободы при развертывании приложений на сервере при принятии решения о точном размещении файлов.
тем не мение, на практике это почему-то оказалось довольно раздражающим, и вы столкнетесь с самыми разными проблемами при попытке использовать эту систему. Не в последнюю очередь потому, что PEAR и PECL оказались не особенно популярными, и композитор является де-факто механизмом управления зависимостями в PHP в наши дни. Таким образом, механизм включения по относительному пути практически мертв, и вы должны использовать абсолютные пути, для которых __DIR__
это действительно необходимо.
Других решений пока нет …