Я очень заинтересован в @Sebastián Grignoli ответить на этот вопрос, но, когда я пытаюсь выполнить его, я получаю Fatal error: Class 'dInspect' not found
.
Может ли кто-нибудь сказать мне, как исправить это? Спасибо.
Я очень заинтересован в @Sebastián Grignoli ответить на этот вопрос, но, когда я пытаюсь выполнить его, я получаю Fatal error: Class 'dInspect' not found
.
Может ли кто-нибудь сказать мне, как исправить это? Спасибо.
Когда я google, первый хит - это ссылка на отладчик NuSphere nusphere.com/products/php_debugger.htm, так как у меня его нет, похоже, что я SOL.
Насколько я могу судить, это какой-то класс, который он сделал. Я googled, и единственное, что подходит для "php dInspect" - это вопрос. Я также искал функции-члены, называемые "дамп" в php-включенных библиотеках, и ничего не нашел.
Возможно, вы сможете немного изменить свой ответ, чтобы получить то, что вы хотите, он выглядит довольно полным. (Я ничего не тестировал)
Здесь приведена упрощенная версия решения. Возможно, вы могли бы адаптировать его к вашим потребностям с меньшими проблемами:
function catch_param($label)
{
$bt = debug_backtrace();
$src = file($bt[0]["file"]);
$line = $src[ $bt[0]['line'] - 1 ];
// let match the function call and the last closing bracket
preg_match( "#catch_param\((.+)\)#", $line, $match );
/* let count brackets to see how many of them actually belongs
to the var name
Eg: die(catch_param($this->getUser()->hasCredential("delete")));
We want: $this->getUser()->hasCredential("delete")
*/
$max = strlen($match[1]);
$varname = "";
$c = 0;
for($i = 0; $i < $max; $i++){
if( $match[1]{$i} == "(" ) $c++;
elseif( $match[1]{$i} == ")" ) $c--;
if($c < 0) break;
$varname .= $match[1]{$i};
}
// $varname now holds the name of the passed variable ('$' included)
// Eg: catch_param($hello)
// => $varname = "$hello"
// or the whole expression evaluated
// Eg: catch_param($this->getUser()->hasCredential("delete"))
// => $varname = "$this->getUser()->hasCredential(\"delete\")"
echo("The passed expression is: ".$varname);
}
Если вам нужен класс проверки, это ссылка для загрузки:
http://download.inspect.jaku.com.ar/
Здесь приведен пример функции инспектора (и моего класса dInspect):
Тексты находятся на испанском языке на этой странице, но код является кратким и очень легким для понимания.