dirname(__FILE__) か__DIR__ か
- 公開日:2016/10/27
この記事は最終更新日から8年以上が経過しています。
絶対パスの取得にdirname(__FILE__)
や__DIR__
が使われていますが、この二つはどう違うのでしょうか?
どちらを使えばいいのか迷ったので調べてみました。
__FILE__
も__DIR__
もPHPのマジカル定数です。
__FILE__
ファイルのフルパスとファイル名(シンボリックリンクを解決した後のもの)。インクルードされるファイルの中で使用された場合、インクルードされるファイルの名前が返されます。
__DIR__
そのファイルの存在するディレクトリ。includeの中で使用すると、インクルードされるファイルの存在するディレクトリを返します。つまり、これはdirname(__FILE__)
と同じ意味です。ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません。
というわけで、dirname(__FILE__)
と__DIR__
は同じ結果になります。
違いは何だというと__DIR__
はPHP5.3から追加されました。
そのため古いPHPを使わざるを得ない環境にはdirname(__FILE__)
が残りますが、PHP5.3以降が使用できる環境であれば、__DIR__
を使えばいいと思います。
require_once( __DIR__ . '/config.php');