У меня есть метод log() и вы хотите записать имя скрипта, который его вызвал. Как это возможно в PHP?Как получить имя скрипта, вызывающего функцию?
ответ
В зависимости от условий вызова, вы должны взглянуть на debug_backtrace и $_SERVER['PHP_SELF']
debug_backtrace()
даст вам трассировки стека из включает в себя и вызовы функций до сих пор, и $_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, и вы хотели знать, что functions.php
включили его, это не сработало - журнал все равно покажет скрипт, который запустил включение (admin.php
или articles.php
). В этом случае вы должны использовать debug_backtrace()
.
Спасибо за 'debug_backtrace()'. Это превосходно! – neoDev
Вы можете посмотреть на функции debug_backtrace
: в это выход, вы должны найти то, что вы ищете ;-)
Вы можете взглянуть на this answer я отправил несколько дней назад, для более информации и примера.
Посмотрите все «данные» в этой ссылке! Я копаю информацию! lol – pythonian29033
Посмотрите на debug_baktrace.
$backtrace = debug_backtrace();
print_r($backtrace[1]);
Используйте debug_backtrace(), чтобы получить ассоциативный массив, содержащий полный стек вызовов и рассмотрит массив, чтобы вытащить детали вы заинтересованы в нем.
В дополнение к ответам, уже предоставленным очень низкотехнологичным ответом, было бы или добавить _ _ FILE _ _ или basename() в строку, которая регистрируется. (необходимо было добавить пробелы для двойного подчеркивания в ФАЙЛЕ, чтобы они отображались)
- 1. Получить имя вызывающего предиката
- 2. Как получить имя модуля Python, вызывающего функцию, написанную на C?
- 3. zsh: получить имя файла скрипта, вызвавшего функцию
- 4. Как получить имя вызывающего класса внутри функции
- 5. Получить имя метода вызывающего абонента
- 6. Получить имя метода вызывающего абонента
- 7. Найти имя DLL-кода, вызывающего функцию C#
- 8. Как получить имя вызывающего класса в Java?
- 9. Как получить имя метода вызывающего абонента
- 10. Как получить имя вызывающего класса (в PHP)
- 11. Как получить имя вызывающего абонента класса?
- 12. Как получить имя вызывающего процесса внутри сборки?
- 13. Java: Как получить имя функции вызывающего абонента
- 14. Как узнать имя вызывающего класса?
- 15. Как получить имя родительского скрипта?
- 16. Получение имени вызывающего абонента для скрипта
- 17. Как записать имя файла/строки, вызывающего текущую функцию в PHP?
- 18. Как определить имя файла, вызывающего функцию в python?
- 19. Nodejs: получить имя функции вызывающего абонента
- 20. Наследование на рубине Получить имя вызывающего абонента
- 21. Получить дескриптор блока, вызывающего функцию интерпретируемого Matlab
- 22. Получить имя параметра из вызывающего метода
- 23. Получить имя вызывающего приложения в wcf
- 24. Получить имя метода вызывающего объекта моего метода
- 25. Можно ли получить имя класса, вызывающего метод?
- 26. PHP - имя вызывает функцию по другому сценарию, получить имя файла из скрипта, содержащий функцию
- 27. Как определить вызывающего функцию в Javascript?
- 28. Как получить имя скрипта в bash?
- 29. Как получить имя скрипта в Groovy
- 30. Как получить имя запущенного скрипта Python?
Дубликат http://stackoverflow.com/questions/1935867/finding-out-the-filename-that-called-my-function-in -php/1935902 – Gordon