Imagínese que tengo la siguiente situación:¿Obtiene la línea de código y el archivo que está ejecutando la función actual en PHP?
file1.php
<?php
include("Function.php");
log("test");
?>
function.php
<?php
function log($msg)
{
echo "";
}
?>
quiero cambiar la función de registro para que se produciría lo siguiente:
prueba (archivo: File1.php, número de línea: 3)
Entonces, ¿alguna forma de obtener el nombre del archivo y el número de línea del código que ejecutó la función actual en PHP?
EDITAR para el uso de backlog comentarios de uso: Cuando uso el backlog en mi modo orientado a objetos de programación tengo la siguiente situación.
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'];
}
}
?>
En este ejemplo se volverá como archivo "Index.php" y como la línea número 4, aquí es donde se inicia la clase. Sin embargo, se supone que devuelve el archivo TestClass.class.php y el número de línea 6. ¿Alguna idea de cómo solucionar esto?
En realidad, hay un problema. Estoy codificando de forma orientada a objetos y devuelve la línea y el script que llama al objeto en el que se llama a la función. En cambio, debería darme el nombre de la clase incluida y la línea dentro de ese archivo de clase. ¿Alguna idea? – Tom
Debe ser más específico aquí. ¿Me puede mostrar lo que está recibiendo y lo que está esperando en su lugar? –
Hola Lior Cohen, ¿podría revisar mi publicación original editada? Expliqué todo en detalle allí. ¡Gracias! – Tom