想象我有以下情況:獲取在PHP中執行當前函數的代碼行和文件?
File1.php
<?php
include("Function.php");
log("test");
?>
Function.php
<?php
function log($msg)
{
echo "";
}
?>
我想更改日誌功能,因此,它會產生如下:
測試(文件:File1.php,行號:3)
那麼,有什麼方法可以獲取在PHP中執行當前函數的代碼的文件名和行號?
編輯積壓使用評論: 當我使用我的面向對象的編程方式積壓我有以下情況。
的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.任何想法如何解決這個問題?
其實,有一個問題。我以面向對象的方式進行編碼,並且它正在返回行和調用調用該函數的對象的腳本。相反,它應該給我包含的類的名稱和該類文件中的行。任何想法? – Tom 2009-08-09 23:53:11
你需要在這裏更具體。你能告訴我你得到了什麼以及你的期望嗎? – 2009-08-10 07:32:55
你好Lior Cohen,你能查看我編輯過的原文嗎?我在那裏詳細解釋了一切。謝謝! – Tom 2009-08-11 10:49:35