- ベストアンサー
呼び出し元のファイル名を取得したい
PHPバージョン5.2.4を使っています。 下のような localhost/c.php とアクセスして a.phpのf()関数をb.phpの中で使った時に、f()の中でb.phpのパスを取得したいのですが そのような関数はあるのでしょうか?$_SERVERだとc.phpのパス(アクセスファイル)は取得できるのですが b.phpはありませんでした。 (呼び出し先と呼び出し元が、自分の中でごっちゃになってて言い方が逆かもしれません・・・) [a.php] function f() { //ここで呼び出し元のパスを取得したい } [b.php] ← このファイルパスを取得したい require_once 'a.php'; f(); [c.php] ← このファイルを実行 require_once 'b.php';
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
debug_backtrace関数を使用することで取れますよ。
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
そういう関数はありません。呼び出し元で決められた変数にセットしておくなど、あくまでも「自分で管理」してください。
お礼
ご返答ありがとうございます。 う~ん、そうですか・・・ 例えばログなどを記録する時にこういう使い方をすると思うのですが、 記録した(その関数を使った)場所も知りたいと思いました。 上の例だと次のように変更 [a.php] function f($path, $message) { write('場所:' . $path . ' 内容:' . $message); } [b.php] require_once 'a.php'; f('ここのファイルパス', 'エラー内容'); とすればできると思いますが、こういう書き方は良くない気がしたので 何かないかと質問しました。
お礼
ご返答ありがとうございます。 なるほど、この関数はいろんな値が取れそうですね。