<?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