Ответ 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.)