2010-05-01 19 views

risposta

157

Il loro risultato è esattamente lo stesso; quindi, nessuna differenza su questo.


Ad esempio, le due righe seguenti:

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

Entrambe dare la stessa uscita:

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


Ma, ci sono almeno due differenze:

  • __DIR__ esiste solo con PHP> = 5,3
    • ecco perché dirname(__FILE__) è più diffuso
  • __DIR__ viene valutata al momento della compilazione, mentre dirname(__FILE__) intende una funzione -call e viene valutata al momento dell'esecuzione
    • so, __DIR__ è (o, dovrebbe essere) più veloce.


quanto, come riferimento, vedere la sezione del manuale Magic constants(citando):

__DIR__: La directory del file.
Se utilizzato all'interno di un inclusivo, la directory del file incluso è restituita.
Questo è equivalente a dirname(__FILE__).
Questo nome di directory non ha una barra finale a meno che non sia la directory root .
(aggiunto in PHP 5.3.0)

+0

Quando è disponibile __FILE__? – user198729

+2

Non è sicuro, ma è già lì da un po 'di tempo * (la pagina delle costanti di Magic del manuale dice che il suo bahavior è stato modificato in PHP 4.0.2, quindi direi che è stato lì prima) * –

+2

__DIR__ e dirname (__ FILE__) spoglia sempre l'ultima barra, corretta? – nbrogi

Problemi correlati