Представьте, что у меня есть следующая ситуация:
File1.php
<?php
include("Function.php");
log("test");
?>
Function.php
<?php
function log($msg)
{
echo "";
}
?>
Я хочу изменить функцию журнала так, чтобы она создавала следующее:
test (файл: File1.php, номер строки: 3)
Итак, любой способ получить имя файла и номер строки кода, выполняющего текущую функцию в PHP?
EDIT для комментариев использования комментариев: Когда я использую backlog в моем объектно-ориентированном способе программирования, у меня есть следующая ситуация.
Index.php
<?php
include("Logger.static.php");
include("TestClass.class.php");
new TestClass();
?>
TestClass.class.php
<?php
class TestClass
{
function __construct()
{
Logger::log("this is a test log message");
}
}
?>
Logger.static.php
<?php
class Logger
{
static public function log($msg)
{
$bt = debug_backtrace();
$caller = array_shift($bt);
echo $caller['file'];
echo $caller['line'];
}
}
?>
Этот пример будет возвращен как файл "Index.php", а как строка номер 4, здесь начинается класс. Тем не менее, предполагается вернуть файл TestClass.class.php и номер строки 6. Есть идея, как это исправить?