更新日:2021年8月17日
ファイル名を取得し、「.php」の拡張子だけは削除するPHPの記事では、便利なbasenameのご紹介をしましたが、
指定したファイルを呼び出すPHPの記事で紹介したincludeとの合わせ技の際には思うようなファイル名を取得出来ない場合があります。
例えば、common.phpの中にbasenameのPHPの記述がある際、そのcommon.phpをincludeした場合に取得されるファイル名はcommon.phpとなります。
つまりbasenameが取得するファイル名はbasenameの記述があるファイル名になります。でもbasenameの記述があるファイル名ではなく、includeの記述がある側のファイル名を取得したい場合があるかと思います。
前置きが長くなってしまいましたが、今回はその方法のご紹介です。
yobidashi.phpとcommon.phpという2つのPHPファイルがある想定になりますが、
yobidashi.phpにはcommon.phpを呼び出す為のincludeの記述があります。そしてcommon.phpにはファイル名を取得する為の記述があるのですが、今回取得したいファイル名は呼び出し元のyobidashi.phpということになります。
そのファイルを呼び出す為の記述が下記になります。これはcommon.phpに書く記述です。
<?php //includeを使っている呼び出し元のファイル情報を取得 $txt_name = debug_backtrace(); //includeを使っている呼び出し元のファイル名を出力 $txt_name = $txt_name[0]["file"]; $txt_name = basename($txt_name, ".php"); ?>
これにて完了です!取得されるのは「yobidashi」となります。
basenameする前にdebug_backtrace()を使って下準備をしているのがポイントになります。
ご活用下さい!