【PHP】dirname(__FILE__) と__DIR__ について

  • 投稿 : 2016-11-04
なぜ __DIR__ ではなく、dirname(__FILE__) を使うのですか?


PHP5.3以降 → __DIR__ が使える
PHP5.2以前 → dirname(__FILE__) で代用するしかない

互換性を考える場合は後者が使われるでしょう。しかし、もう5.3ですら数週間後にサポートが終了します。5.2なんか太古の昔のものなので、前者を使っても全然構わないと思います。
なぜ __DIR__ ではなく、dirname(__FILE__) を使うのですか?お世話に... - Yahoo!知恵袋

仕事でないかぎり、特別な理由がない限り、__DIR__で良いと思います。

PHP5.2以前に急に対応しないといけなくなったら?

if( !defined( __DIR__ ) )define( __DIR__, dirname(__FILE__) );

未定義の時は、定義してあげるコードを書けばOKではないか?と思います。そのあたりを考慮して作成すれば、__DIR__で統一できるかと思います。

参考:PHP 5.2 Notice: Use of undefined constant __DIR__ - assumed '__DIR__ - Stack Overflow

そもそも、dirname(__FILE__)、__DIR__ ってなに?

__FILE__ ファイルのフルパスとファイル名 (シンボリックリンクを解決した後のもの)。 インクルードされるファイルの中で使用された場合、インクルードされるファイルの名前が返されます。


__DIR__ そのファイルの存在するディレクトリ。include の中で使用すると、 インクルードされるファイルの存在するディレクトリを返します。 つまり、これは dirname(__FILE__) と同じ意味です。 ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません
PHP: 自動的に定義される定数 - Manual

PHP: dirname - Manual

require_once dirname(__FILE__) . "/define.php";
require_once  __DIR__ . '/define.php' ;

どちらも同じ意味です。

スポンサーリンク

タグ#PHP#code