Modérateur PHPfrance |
10684 Messages
01 juin 2011, 22:29
Ben.... les deux valeurs ne sont pas toujours identiques
Par exemple, "__DIR__" va te retourner le dossier dans lequel se trouve le fichier. Quand tu n'as qu'un seul fichier, cela va effectivement revenir au même qu'un "./" ... mais lorsque ton fichier va en inclure un autre, la valeur de __DIR__ va changer.
Par exemple, supposons que tu as un fichier A.php à la racine de ton site et deux fichiers B.php et C.php dans un répertoire "inc/" :
Supposons que B ait besoin d'inclure le fichier C, pour inclure le fichier de façon relative, tu vas avoir un include "./C.php" dans B
Supposons maintenant que A ait besoin d'inclure le fichier B, tu vas avoir un include "./inc/B.php" dans A.
Le problème, c'est que lorsque c'est A qui s'exécute (et qu'il exécute donc le code de B comme s'il était inclus dans A), le chemin permettant d'inclure C devrait être "./inc/C.php" et non pas "./C.php", ce qui va générer une erreur.
Avec __DIR__, tu vas pouvoir récupérer l'emplacement du fichier inclus (et non pas du script principal qui est en train de s'exécuter). Supposons maintenant que dans B j'ai inclus le fichier C de la manière suivante : __DIR__ . "/C.php"
Si j'exécute B, __DIR__ équivaudra à un "./", tandis que si j'exécute A, il équivaudra à un "./inc/"
(Je ne sais pas si c'est très clair, mais l'idée c'est par exemple de pouvoir inclure des fichiers en cascade sans être obligé de les stocker tous dans le même répertoire

)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...