Зачем включать 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
тогда вы можете быть уверены, что загружаете правильный файл.