<?php
function _dump($var, $name = "", $return = false){
$output = "<div>";
if (!is_array($var) && !is_object($var)) {
$output .= 'Var name: '.$name.'<br>';
$output .= 'Type: '.gettype($var).'<br>';
$output .= 'Length: '. strlen((string) $var).'<br>';
$output .= 'Value: '.$var.'<br>';
} else{
$output .= 'Var '.$name.' is an '.gettype($var).
' with length '.count((array) $var).
' and the values is listed bellow:<br>';
foreach($var as $k => $v){
$output .= '<div style="margin-left:10px;">'.
_dump($v, $k, true).'</div>';
}
}
$output .= "</div>";
if($return)
return $output;
else echo $output;
}
$backtrace = debug_backtrace();
foreach($backtrace as $b){
_dump($b['args'], "Args");
echo '<hr>';
}
?>
当是$ var是它打印预期数组值的数组,但提出了一个通知:“数组就行字符串转换8“。并且当在$ var($ b ['args'])中存在它引发的对象致命错误:“类__PHP_Incomplete_Class的对象无法转换为第8行的字符串”。
的问题,我想,是不是“__PHP_Incomplete_Class”的事情,但“不能转换为字符串上线8”,因为我已经做了“如果(!is_array()& &!is_object() )“。所以,如果我正在检查它,为什么会提高通知和错误?
任何想法?
这是debug_bactrace()所引发异常的确切迭代:
Array
(
[file] => /home/gabriel/Projects/realinvest/engine/class.system.php
[line] => 93
[function] => call_user_func_array
[args] => Array
(
[0] => Array
(
[0] => __PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => Procedures
[system:protected] => System Object
(
[controller:protected] => users
[method:protected] => register
[args:protected] => Array
(
[0] => 1
)
[cpath:protected] => /var/www/html/realinvest//controllers/
)
[module:Controller:private] => procedures
[method:Controller:private] => register
[model:protected] => __PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => ModelProcedures
[primarykey:Model:private] => id
[table:Model:private] => procedures
[dbclass:protected] => __PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => Dbclass
[dbhost:Dbclass:private] => localhost
[dbname:Dbclass:private] => processos_real
[dbuser:Dbclass:private] => root
[dbpass:Dbclass:private] => h7t846m2
[dbtype:Dbclass:private] => mysql
[cnnInfo:Dbclass:private] => stdClass Object
(
[info] => No connection info.
)
[connection:Dbclass:private] =>
[queryerror] =>
[datatypes:Dbclass:private] => Array
(
[boolean] => 5
[integer] => 1
[double] => 2
[string] => 2
[resource] => 3
)
[transaction_mode:Dbclass:private] =>
[lastresult:Dbclass:private] =>
[error] => 0
)
[sql:protected] => __PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => Sql
[table:Sql:private] => procedures
[sqlstring:Sql:private] => SELECT * FROM `procedures` WHERE procedures.`id`= ?
[sqlvalues:Sql:private] => Array
(
[id] => 1
)
)
)
)
[1] => register
)
[1] => Array
(
[0] => 1
)
)
)
你能举一个'$ var'的例子来测试它吗? – AnthonyB
通知只是为了提高认识。它对您的代码是非阻塞的,并且将在生产服务器上禁用。在对象上,你应该使用[''get_class()''](https://secure.php.net/manual/fr/function.get-class.php)函数来显示它的名字。 –
给我们完整的错误信息,并告诉我们它指的是哪一行。确定'echo $ k。' =>'。$ v'不会引发那个错误......‽ – deceze