ここでは、PHP で自動的に定義される定数を掲載しています。ディレクトリ名やファイル名やネームスペースなど、PHP にも多言語と同様にそれらの定数が存在します。
スポンサーリンク
自動定義定数の出力サンプル
PHP で自動的に定義される定数の出力結果例になります。詳細はサンプル内のコメント内を参照ください。
// 階層付でネームスペースを設定する namespace Top\Sub\SubSub; class classA { public function func() { // ネームスペース、クラス名、メソッド名、行数を出力する echo __NAMESPACE__ . "::" . __CLASS__ . '::' . __METHOD__ . '(line='. __LINE__ . ')'; // // Top\Sub\SubSub::Top\Sub\SubSub\classA::Top\Sub\SubSub\classA::func(line=11) // // ネームスペースが設定されているとクラス名やメソッド名にもネームスペースが付与される // __CLASS__ は以下と同等 echo get_class($this); // Top\Sub\SubSub\classA // 関数名を出力する // __FUNCTION__ 定数の場合はネームスペースは付与されない echo __FUNCTION__; // func } } // ファイルの存在するディレクトリ名の絶対パスを出力する echo __DIR__; // /path/to/dir // __DIR__ は以下と同等 //echo dirname(__FILE__); // /path/to/dir // ファイルの絶対パスを出力する echo __FILE__; // /path/to/dir/file.php $a = new classA(); $a->func();
※ __NAMESPACE__ および __DIR__ は PHP5.3.0 以降で使用可能となりました。
継承したクラス名における get_class 関数の出力結果
このサンプルスクリプトの出力結果は get_class 関数の仕様に関するモノです。__CLASS__ や __METHOD__ などの自動定義定数は継承には依存せず、記述した部分のクラス名やメソッド名が格納されます。
// 親クラス class parentClass { public function func() { echo get_class($this); // Top\Sub\SubSub\childClass echo get_class(); // Top\Sub\SubSub\parentClass } } // 子クラス class childClass extends parentClass { } $c = new childClass(); $c->func();