CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

PHPにはあらかじめ定義されている定数「マジカル定数(マジック定数)」があります。
なんとなくその存在は知っていたのですが、活用しきれていない部分があったので、今回改めて調べてみました。

PHP5.3時点で、マジカル定数は7つあります。

echo __LINE__;

これはプログラム「echo」が実行されたコードの行数を出力します。例えば「30」など、整数で出力されます。

echo __FILE__;

ファイルのフルパスとファイル名が出力されます。例えば「/var/www/sample.php」といった文字列が出力されます。

echo __DIR__;

フルパスが出力されます。例えば「/var/www/」と出力されます。こちらはPHP5.3以降からしか使用できないので注意が必要です。それ以前のバージョンでは

echo dirname(__FILE__);

とすれば同じ結果「/var/www/」が得られます。

function sample_function(){
   echo __FUNCTION__;
}

関数名を出力します。上の例だと「sample_function」が出力されます。

class SampleClass{
   function SampleClass(){
      echo __CLASS__;
   }
}

クラス名を出力します。この例では「SampleClass」が出力されます。

class SampleClass{
   function SampleClass(){
   }
   function getInfo(){
      echo __METHOD__;
   }
}

メソッド名を出力します。この例では「SampleClass::getInfo」が出力されます。

echo __NAMESPACE__;

名前空間の名前が出力されるようです。こちらはちょっと縁がなさそうです。

define('RELATIVE_PATH', '../../');

現在実行中のプログラムでライブラリなどを読み込むため、上記のように相対パスを持ちまわったり、フルパスを取得するのに遠回りなプログラムを書いていたこともありますが、これらのマジカル定数を知っていればシンプルに作業ができそうです。

このエントリーをはてなブックマークに追加

Monthly Archives

Search