Например, я всегда вижу автопогрузчиков называют так:Зачем включать __DIR__ в require_once?
require_once __DIR__ . '/../vendor/autoload.php';
Какая разница между этим и тем более кратким
require_once '../vendor/autoload.php';
?
Например, я всегда вижу автопогрузчиков называют так:Зачем включать __DIR__ в require_once?
require_once __DIR__ . '/../vendor/autoload.php';
Какая разница между этим и тем более кратким
require_once '../vendor/autoload.php';
?
PHP-скрипты работают относительно текущего пути (результат getcwd()
), а не по пути их собственного файла. Использование __DIR__
заставляет включить включение относительно их собственного пути.
Для демонстрации создайте следующие файлы (и каталоги):
- file1.php
- dir/
- file2.php
- file3.php
Если file2.php
включает file3.php
так:
include `file3.php`.
Это будет работать хорошо, если вы звоните file2.php
напрямую. Однако если file1.php
включает в себяfile2.php
, текущий каталог (getcwd()
) будет неправильным для file2.php
, поэтому file3.php
не может быть включен.
Для включения его можно установить некоторые папки, в которых поиск по PHP выполняется автоматически. Когда вы включаете файл с относительным путем, который вы просматриваете во всех этих папках. Лучше определить реальный путь для предотвращения некоторых ошибок при загрузке неправильных файлов.
https://secure.php.net/manual/en/function.set-include-path.php
Тогда вы можете быть уверены, что вы загрузите нужный файл.
Хотя это и правда, это не самая важная причина. – Evert