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ć.