phpには自分自身(実行中のphpファイル)のファイル名を得る方法として、
__FILE__ というシステム変数が用意されている。
$test = __FILE__;
echo $test;
とすれば、
/home/marumusi_antena/public_html/test.php
といった具合だ。
しかし、ちょっと気の利いたプログラム構成を考えると
oya.php の中から test.php をincludeしたりrequireしたりの構成になる。
この構成でoya.phpの情報を得ようとすると、もう __FILE__ は使えないのだ。
__FILE__ は常に、test.phpの情報を返す。
このように、呼出元の情報が欲しいなら、debug_backtrace がオススメのようだ。
これは親元の情報を連想配列として返してくれるらしい。
functionstring カレントの関数名。 __FUNCTION__ も参照してください。
lineinteger カレントの行番号。 __LINE__ も参照してください。
filestring カレントのファイル名。 __FILE__ も参照してください。
classstring カレントのクラス名。 __CLASS__ も参照してください。
objectobject カレントのオブジェクト。
typestring カレントのコール方式。メソッド呼び出しの場合は “->”、 静的なメソッド呼び出しの場合は “::” が返されます。 関数呼び出しの場合は何も返されません。
argsarray 関数の内部の場合、関数の引数のリストとなります。 インクルードされたファイル内では、 読み込まれたファイルの名前となります。
って事なので、file がそうです。
$rensou = debug_backtrace();
echo $rensou[0][“file”];
とすれば、
/home/marumusi_antena/public_html/oya.php
てな感じで呼び出し元の情報が得られます。
※debug_backtraceのリファレンスは、http://php.net/manual/ja/function.debug-backtrace.php を見るのがよろしい^^
実はまるむしもdebug_backtraceの使い方で判らない所があったので参考サイトを見て回ったのですが….
検索エンジンに表示される上位サイトのほとんどが、PHPマニュアル丸写しのコピーサイトばかり^^;;;
よってサンプルプログラムまでぜーーーんぶ同じでした。^^;ビックリ
掲載許可取ってるのか? 取ってないだろうなぁ…
サンプルまでの同じってことは、無断で転載・掲載やってまーす!て自白しているようなもの。
すべてのサイトが見る価値無しとは言わないけど、せめてサンプルプログラムぐらいは自力で書いてよ...ね。
コメント