私がdebug_backtraceについて知っているが、それは私が欲しいの目的ではありません。
私はあなたがバックトラック機能を使用しないことを主張しているのを見ますが、それでも私はあなたがバックトラックと呼ばれる機能を呼び出すときにログしたいと思うと便利だと思います。
考えられるのは、if条件をデバッグしてこのコードを評価するたびに、定数に格納されている事前定義ピースのpfコードがあるということです。
もしあなたがprouctionの下にあるならば、if文はあなたのコードのスピードに影響を与えないように評価することを防ぎます。それがあなたのために働くならば、それをあなたのニーズに合わせて変更し、より多くのレベルを追跡することができます。
これは完全な例です。私が正しく理解していない場合、これがあなたが探しているものではない場合、私の謝罪です!これは、test1.php
<?PHP
class test1
{
public static function a()
{
test2::b();
}
}
?>
最後にあるtest2のあるtest.phpを
<?php
define ('__SITE_PATH',realpath(dirname(__FILE__)).'/');
ini_set('log_errors', 1);
ini_set('error_log', __SITE_PATH.'my_error_log.log');
include 'test1.php';
include 'test2.php';
define (__DEBUG_EVAL, '
$dbt = debug_backtrace();
error_log(
"\n".
"Parent function file: " . $dbt[1]["file"] . "\n" .
"Parent function class: " . $dbt[2]["class"] . "\n" .
"Parent fiunction name: " . $dbt[2]["function"] . "\n" .
"Par. fiunc. called from line: " . $dbt[2]["line"] . "\n" .
"Child function file: " . $dbt[0]["file"] . "\n" .
"Child function class: " . $dbt[1]["class"] . "\n" .
"Child fiunction name: " . $dbt[1]["function"] . "\n" .
"Child fiunc. called from line: " . $dbt[1]["line"] . "\n" .
"\n"
);
');
test1::a();
?>
:
は、あなたがファイルを持っている例を確認するには。 <?PHP
class test2
{
public static function b()
{
if(defined('__DEBUG_EVAL')) eval(__DEBUG_EVAL);
echo 'Hello!';
}
}
?>
このPHPは結果です:
[13-Apr-2012 14:37:18]
Parent function file: C:\PHP-GTK\MyProjects\Electre\test1.php
Parent function class: test1
Parent fiunction name: a
Par. fiunc. called from line: 29
Child function file: C:\PHP-GTK\MyProjects\Electre\test2.php
Child function class: test2
Child fiunction name: b
Child fiunc. called from line: 7
http://php.net/manual/en/function.rename-function.php 何か他のものに元の関数の名前を変更この名前で独自の関数を作成し、内部で元の関数を呼び出します。欠点は、PECLからAPDをインストールする必要があることです。 – strkol