113 votes

Y a-t-il une différence entre __DIR__ et dirname(__FILE__) en PHP ?

Il me semble que c'est la même chose, mais je n'en suis pas sûr,

parce qu'il existe de nombreux projets qui utilisent dirname(__FILE__) .

181voto

Pascal MARTIN Points 195780

Le résultat est exactement le même ; il n'y a donc pas de différence sur ce point.

Par exemple, les deux lignes suivantes :

var_dump(dirname(__FILE__));
var_dump(__DIR__);

Les deux donnent-ils le même résultat ?

string '/home/squale/developpement/tests/temp' (length=37)

Mais il y a au moins deux différences :

  • __DIR__ n'existe qu'avec PHP >= 5.3
    • C'est pourquoi dirname(__FILE__) est plus largement utilisé
  • __DIR__ est évaluée à la compilation, tandis que dirname(__FILE__) désigne un appel de fonction et est évalué au moment de l'exécution
    • donc, __DIR__ est (ou devrait l'être) plus rapide.

A titre de référence, voir le Constantes magiques section du manuel (citant) :

__DIR__ : Le répertoire des
S'il est utilisé à l'intérieur d'un i répertoire retourné.
Cela équivaut à dirname(__FILE__) .
T Ce nom de répertoire ne comporte pas de sauf s'il s'agit du répertoire Root .
(Ajouté en PHP 5.3.0.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X