Зачем включать DIR в require один раз?

например, я всегда вижу, что загрузчики называются так:

require_once __DIR__ . '/../vendor/autoload.php';

в чем разница между этим и более лаконичные

require_once '../vendor/autoload.php';

?

2 ответов


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

тогда вы можете быть уверены, что загружаете правильный файл.