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