2010-05-01 11 views

Respuesta

157

Su resultado es exactamente el mismo; entonces, no hay diferencia en eso.


Por ejemplo, las dos líneas siguientes:

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

los dos para dar la misma salida:

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


Sin embargo, hay al menos dos diferencias:

  • __DIR__ sólo existe con PHP> = 5,3
    • que es la razón por dirname(__FILE__) es más ampliamente utilizado
  • __DIR__ se evalúa en tiempo de compilación, mientras dirname(__FILE__) significa una función -llamada y se evalúa en tiempo de ejecución
    • entonces, __DIR__ es (o, debería ser) más rápido.


Como, como referencia, consulte la sección del manual Magic constants(citando):

__DIR__: El directorio del archivo.
Si se usa dentro de un include, el directorio del archivo incluido es devuelto.
Esto es equivalente a dirname(__FILE__).
Este nombre de directorio no tiene una barra diagonal posterior a menos que sea el directorio raíz .
(Agregado en PHP 5.3.0.)

+0

¿Cuándo está disponible '__FILE__'? – user198729

+2

No estoy seguro, pero lleva allí bastante tiempo * (la página de Constantes mágicas del manual dice que su comportamiento ha sido modificado en PHP 4.0.2, así que diría que ya ha estado allí antes) * –

+2

__DIR__ y dirname (__ FILE__) siempre tira la última barra, ¿correcto? – nbrogi

Cuestiones relacionadas