Par exemple, je vois toujours des autoloaders appelés comme ceci:
require_once __DIR__ . '/../vendor/autoload.php';
Quelle est la différence entre cela et le plus concis
require_once '../vendor/autoload.php';
?
Les scripts PHP s'exécutent par rapport au chemin actuel (résultat de getcwd()
) et non au chemin de leur propre fichier. L'utilisation de __DIR__
force l'inclusion à se produire par rapport à son propre chemin.
Pour démontrer, créez les fichiers suivants (et les répertoires):
- file1.php
- dir/
- file2.php
- file3.php
Si file2.php
inclut file3.php
comme ceci:
include `file3.php`.
Cela fonctionnera bien si vous appelez file2.php
directement. Cependant, si file1.php
includes file2.php
, le répertoire en cours (getcwd()
) sera incorrect pour file2.php
, de sorte que file3.php
ne pourra pas être inclus.
Pour inclure, il est possible de définir certains dossiers dans lesquels PHP effectue une recherche automatique. Lorsque vous incluez un fichier avec un chemin relatif, vous effectuez une recherche dans tous ces dossiers. Il est préférable de définir le chemin réel pour éviter certaines erreurs lors du chargement de mauvais fichiers.
https://secure.php.net/manual/en/function.set-include-path.php
Ensuite, vous pouvez être sûr de charger le bon fichier.