php include_once(include)やrequire_once(require)で呼び出された時、呼出元ファイルの情報を得るには debug_backtrace を使うのじゃ!

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 がオススメのようだ。
これは親元の情報を連想配列として返してくれるらしい。
function string カレントの関数名。 __FUNCTION__ も参照してください。
line integer カレントの行番号。 __LINE__ も参照してください。
file string カレントのファイル名。 __FILE__ も参照してください。
class string カレントのクラス名。 __CLASS__ も参照してください。
object object カレントのオブジェクト。
type string カレントのコール方式。メソッド呼び出しの場合は “->”、 静的なメソッド呼び出しの場合は “::” が返されます。 関数呼び出しの場合は何も返されません。
args array 関数の内部の場合、関数の引数のリストとなります。 インクルードされたファイル内では、 読み込まれたファイルの名前となります。
って事なので、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マニュアル丸写しのコピーサイトばかり^^;;;
 よってサンプルプログラムまでぜーーーんぶ同じでした。^^;ビックリ
 掲載許可取ってるのか? 取ってないだろうなぁ…
 サンプルまでの同じってことは、無断で転載・掲載やってまーす!て自白しているようなもの。
 すべてのサイトが見る価値無しとは言わないけど、せめてサンプルプログラムぐらいは自力で書いてよ...ね。
  

シェアする

フォローする