想象一下我有以下情况:
File1.php
<?php
include("Function.php");
log("test");
?>
Run Code Online (Sandbox Code Playgroud)
Function.php
<?php
function log($msg)
{
echo "";
}
?>
Run Code Online (Sandbox Code Playgroud)
我想更改日志功能,以便它将产生以下内容:
test(文件:File1.php,行号:3)
那么,以何种方式获取PHP中执行当前函数的代码的文件名和行号?
编写积压使用注释:当我以面向对象的编程方式使用backlog时,我有以下情况.
的index.php
<?php
include("Logger.static.php");
include("TestClass.class.php");
new TestClass();
?>
Run Code Online (Sandbox Code Playgroud)
TestClass.class.php
<?php
class TestClass
{
function __construct()
{
Logger::log("this is a test log message");
}
}
?>
Run Code Online (Sandbox Code Playgroud)
Logger.static.php
<?php
class Logger
{
static public function log($msg)
{
$bt = debug_backtrace();
$caller = array_shift($bt);
echo $caller['file'];
echo $caller['line'];
}
}
?>
Run Code Online (Sandbox Code Playgroud)
此示例将作为文件"Index.php"返回,并作为第4行返回,这是启动类的位置.但是,它应该返回文件TestClass.class.php和第6行.任何想法如何解决这个问题?
是否有适用于PHP的代码覆盖工具?我希望检查我的代码和用PHP编写的API的代码覆盖率,但是我无法掌握PHP的任何代码覆盖工具,因为它更像是服务器端语言和动态性质.
有谁知道可以执行PHP代码覆盖的方法?