PHPのマジック定数とは何かと__FILE__や__DIR__等の使い方

PHPの__FILE__や__DIR__(マジック定数)の使い方をまとめた

1404 回閲覧されました

みなさんこんにちは、jonioです。

実務で「__FILE__」を見かけて調べたのですがそれをまとめました。

マジック定数とは何か

まずはこれからです。

対象フォルダや対象ファイルまでの絶対パスなどの事をマジック定数と言い、例として「__FILE__」や「__DIR__」などがあります。

実際にマジック定数を使ってみます。

sample.phpをmajikフォルダの下に配置します。

__FILE__

これを使うと呼び出したマジック定数が存在するファイルの絶対パスが表示されます。

sample.phpで実際に使ってみますがコードを↓にします。

これで表示画面に「/Applications/MAMP/htdocs/majik/sample.php」 と表示されsample.phpまでの絶対パスを確認できます。

注意点

他のファイルからsample.phpを呼び出したとしてもsample.phpまでの絶対パスまでしか表示されないので注意してください。

「__FILE__」があるファイルまでの絶対パスが表示されるから当たり前ですが。

試しにinclude.phpでsample.phpを呼び出してみます。

これでinclude.phpの表示画面を見ると「/Applications/MAMP/htdocs/majik/sample.php」 と表示されます。

次は「__DIR__」です。

__DIR__

これを使うと呼び出したマジック定数が存在するフォルダの絶対パスが表示されます。

sample.phpで実際に使ってみますがコードを↓にします。

これでsample.phpの表示画面を見ると「/Applications/MAMP/htdocs/majik」 と表示されます。

他のファイルでsample.phpを呼び出しても「__FILE__」の時と同じ様に「__DIR__」を呼び出しているファイルの上の階層のフォルダ(majik)が表示されるので注意してください。

次は「__LINE__」です。

__LINE__

これは「__LINE__」の記載があるファイルの中で「__LINE__」が何行目にあるかが表示されます。

sample.phpに使うと↓になります。

「__LINE__」は2行目に記載があるのでsample.phpを確認すると「2」と表示されます。

次は「__FUNCTION__」です

__FUNCTION__

これは「__FUNCTION__」の外側にある関数名を表示して関数がない場合は「__FUNCTION__」は何も表示されません。

まずはただのメソッドで確認しますがsample.phpのコードを↓にします。

これでsample.phpの表示画面を確認すると「display」と表示されます。

次はクラスメソッドで確認しますがsample.phpのコードを↓にします。

これで sample.phpの表示画面を確認すると「display」と表示されます。

次はメソッドがない場合ですがsample.phpのコードを↓にします。

次は「__METHOD__」です。

__METHOD__

「__FUNCTION__」の時の様にメソッド名を表示しますがクラスがある場合はクラス名も表示します。

クラスメソッドで確認します。

sample.phpのコードを↓にします。

これでsample.phpの表示画面を確認すると「Test::display」と表示されます。

次は「__CLASS__」です。

__CLASS__

これはメソッドを呼び出すためのクラスを表示します。

sample.phpのコードを↓にします。

これでsample.phpの表示画面を確認すると「Test」と表示されます。