Есть ли разница между DIR и dirname(FILE) в PHP?


Это выглядит так же для меня,но я не уверен,

потому что есть много проектов, которые использует dirname(__FILE__).

1 104
php

1 ответ:

их результат точно такой же; так что, никакой разницы.


Например, две следующие строки :

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

оба дадут один и тот же результат :

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


Но, есть по крайней мере два отличия :

  • __DIR__ существует только с PHP > = 5.3
    • именно поэтому dirname(__FILE__) более широко используется
  • __DIR__ вычисляется во время компиляции, в то время как dirname(__FILE__) означает вызов функции и вычисляется во время выполнения
    • и __DIR__ и (или должны быть) быстрее.


Как, в качестве ссылки, см. магические константы инструкции (цитирую):

__DIR__ - каталог файлов.
если используется внутри include, то каталог включенного файла: возвращенный.
это эквивалентно dirname(__FILE__).
этот имя каталога не имеет конечная косая черта, если это не корень справочник.
(добавлено в PHP 5.3.0.)