__FILE__
всегда заменяется именем файла, в котором появляется символ.
Чтобы получить имя файла, из которого была вызвана функция, вы можете использовать debug_backtrace()
. Это возвращает текущий стек вызовов в виде массива, причем каждый вложенный массив содержит файл, строку и функциональные клавиши, с которых был сделан вызов.
Вы можете сдвинуть самый передний элемент массива, чтобы получить место, из которого была вызвана функция:
a.php:
<?php
require_once('b.php');
b();
b.php:
<?php
function b() {
$bt = debug_backtrace();
var_export($bt);
}
выход:
array (
0 => array (
'file' => '/home/meagar/a.php',
'line' => 5,
'function' => 'b',
'args' => array( ),
),
)
То же самое работает без вызовов функций:
a.php:
<?php require_once('b.php');
b.php:
<?php
$bt = debug_backtrace();
var_export($bt);
выход:
array (
0 => array (
'file' => '/home/meagar/a.php',
'line' => 3,
'function' => 'require_once',
),
)