PHPの__FILE__と__DIR__

php-logo

PHPのマジカル変数の__FILE__と__DIR__についてまとめてみました。

WordPressで時々みかけるのでぜひ覚えていってください!

__FILE__と__DIR__の内容

__FILE__と__DIR__の内容は以下の表にまとめました。

変数名 格納されている内容
__FILE__シンボリックリンクが解決されたファイルまでの絶対パス
__DIR__ファイルの格納されているディレクトリの絶対パス
PHP5.3よりも前のバージョンでは__DIR__がありませんでした。 ですので、ファイルの格納されているディレクトリは

dirname(__FILE__)

を使うしかありませんでした。

PHP5.3から__DIR__が追加され、直接ファイルのディレクトリにマジカル変数としてアクセスできるようになりました。

__FILE__と__DIR__が存在する理由

そもそも、これらはなぜ使う必要があるのでしょうか?

間接パスをファイルに直接書いてしまうと、実行するファイルによってパスが異なってしまうためです。

__FILEと__DIR__は絶対パスを返すので、これを利用することで正確にファイルの場所を示すので、実行するファイルによってパスが異なることはありません

プログラムが様々なファイルから参照されているなら、絶対パスを指定せずに間接パスを設定すると思わぬエラーで詰まるので注意したいところです!

WordPressのABSPATHがdirname(__FILE__)を使用しているのも上記の理由があるためだと考えられます。

ちなみに、__FILE__と__DIR__は末尾にスラッシュがつきません

したがって、必要に応じて加えてあげましょう。