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

Il me semble la même chose, mais je ne suis pas sûr,

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

104
php
demandé sur user198729 2010-05-01 13:25:57

1 réponses

Leur résultat est exactement le même ; donc, aucune différence à ce sujet.


Par exemple, les deux lignes suivantes :

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

Donnera tous les deux la même sortie:

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


Mais, il y a au moins deux différences :

  • __DIR__ existe uniquement avec les PHP >= 5.3
    • , qui est pourquoi dirname(__FILE__) est plus largement utilisé
  • __DIR__ est évaluée au moment de la compilation, tandis que dirname(__FILE__) signifie un appel de fonction et est évalué au moment de l'exécution
    • , de sorte, __DIR__ est (ou devrait être) plus rapide.


Comme référence, voir le constantes magiques section du manuel (citant) :

__DIR__ : Le répertoire du fichier.
si utilisé à l'intérieur d'un include, le répertoire du fichier inclus est retourner.
ceci est équivalent à dirname(__FILE__).
Ce le nom du répertoire n'a pas barre oblique finale sauf si c'est la racine répertoire.
(ajouté en PHP 5.3.0.)

165
répondu Pascal MARTIN 2014-08-30 15:17:42