У меня есть метод log () и вы хотите записать имя скрипта, который его вызвал. Как это возможно в PHP?
В зависимости от вызывающей среды вы должны посмотреть на debug_backtrace и $ _SERVER ['PHP_SELF']
debug_backtrace()
покажет вам трассировку стека вызовов и вызовов функций, а $_SERVER['PHP_SELF']
скажет вам исполняемый скрипт, который проще и может работать так же хорошо, как вы хотите. $_SERVER['PHP_SELF']
почти всегда будет скриптом, который $_SERVER['PHP_SELF']
из браузера, например, если у вас были blah.com/admin.php
и blah.com/articles.php
которые оба вызывали /pages.php
чтобы получить список страниц, сохраненных в блоге или что-то в этом роде, и что-то пошло не так – журнал скажет вам, вызывал ли скрипт admin.php
или articles.php
. Но если pages.php
включал functions.php
которые были включены libs.php
и libs.php, и вы хотели знать, что включенные functions.php
, это не сработает – журнал все равно покажет скрипт, который запустил включение ( admin.php
или articles.php
). В этом случае вы будете использовать debug_backtrace()
.
Вы можете взглянуть на функцию debug_backtrace
: в ее выходе вы должны найти то, что ищете 😉
Вы можете взглянуть на этот ответ, который я опубликовал пару дней назад, для получения дополнительной информации и примера.
Взгляните на debug_baktrace .
$backtrace = debug_backtrace(); print_r($backtrace[1]);
Используйте debug_backtrace (), чтобы получить ассоциативный массив, содержащий полный столбец, и изучить массив, чтобы вытащить интересующие вас детали.
В дополнение к ответам, уже давшим очень низкотехнологичный ответ, нужно либо добавить _ _ FILE _ _ или basename () в строку, которая регистрируется. (нужно было добавить пробелы для двойного подчеркивания в FILE, чтобы он отображался)