PHP 5.3 – dirname(__FILE__) vs __DIR__

Jedną z najczęstszych optymalizacji kodu jest ładowanie plików z lokalizacji bezwzględnej gdyż ogranicza to konieczność przeszukiwania przez PHP ścieżek include_path. Skrypt, który wykonuje:

[php]
require 'd:/www/frame/dev/Core.php’;
[/php]

zadziała szybciej niż

[php]
require 'Core.php’
[/php]

Dlatego przy dyrektywach require i include można najpierw zbadać położenie skryptu aby opracować ścieżkę dostępu. Najczęściej stosuje się polecenie:

[php]
$path = dirname(__FILE__);
[/php]

w rezultacie otrzymamy katalog w którym znajduje się obecnie uruchomiony skrypt. W bardzo wielu systemach jest to używane. Jednakże od wersji PHP 5.3 istnieje stała __DIR__, która zwraca dokładnie to co powyższy kod. Dlaczego warto jej używać? Szybki benchmark:

ile trwa wywołanie po 1 mln razy:

__DIR__0.1562s
dirname(__FILE__)0.4114s

Wynik nie powinien nikogo dziwić, zatem myślę, że warto się na tę stałą przestawić.