dirname(__FILE__) か__DIR__ か
- 公開日:2016/10/27
この記事は最終更新日から9年以上が経過しています。
絶対パスの取得に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');
フォルダ