在CakePHP中,为什么我的调试函数不显示像var_dump这样的对象?

时间:2012-06-07 04:03:01

标签: cakephp

出于某种原因,当我var_dump时它会在变量中显示对象数据,但是当我使用CakePHP的debug时它只显示任何内容。那是为什么?

使用调试我只能得到这么多,但是当我使用var_dump时,对象中有很多东西:

调试的当前设置:

Configure::write('debug', 2);

不起作用:

debug($account);

输出:

object(Recurly_Account) {

}

使用:

echo "<pre>";
var_dump($account);
echo "</pre>";

输出:

object(Recurly_Account)#31 (6) {
  ["_values":protected]=>
  array(12) {
    ["adjustments"]=>
    object(Recurly_Stub)#34 (4) {
      ["objectType"]=>
      string(11) "adjustments"
      ["_href":protected]=>
      string(49) "https://api.recurly.com/v2/accounts/1/adjustments"
      ["_client":protected]=>
      NULL
      ["_links":protected]=>
      array(0) {
      }
    }
    ["billing_info"]=>
    object(Recurly_Stub)#35 (4) {
      ["objectType"]=>
      string(12) "billing_info"
      ["_href":protected]=>
      string(50) "https://api.recurly.com/v2/accounts/1/billing_info"
      ["_client":protected]=>
      NULL
      ["_links":protected]=>
      array(0) {
      }
    }
    ["invoices"]=>
    object(Recurly_Stub)#36 (4) {
      ["objectType"]=>
      string(8) "invoices"
      ["_href":protected]=>
      string(46) "https://api.recurly.com/v2/accounts/1/invoices"
      ["_client":protected]=>
      NULL
      ["_links":protected]=>
      array(0) {
      }
    }
    ["subscriptions"]=>
    object(Recurly_Stub)#37 (4) {
      ["objectType"]=>
      string(13) "subscriptions"
      ["_href":protected]=>
      string(51) "https://api.recurly.com/v2/accounts/1/subscriptions"
      ["_client":protected]=>
      NULL
      ["_links":protected]=>
      array(0) {
      }
    }
    ["transactions"]=>
    object(Recurly_Stub)#38 (4) {
      ["objectType"]=>
      string(12) "transactions"
      ["_href":protected]=>
      string(50) "https://api.recurly.com/v2/accounts/1/transactions"
      ["_client":protected]=>
      NULL
      ["_links":protected]=>
      array(0) {
      }
    }
    ["account_code"]=>
    string(1) "1"
    ["state"]=>
    string(6) "active"
    ["email"]=>
    string(20) "test1@test.com"
    ["first_name"]=>
    string(7) "test"
    ["last_name"]=>
    string(3) "test"
    ["hosted_login_token"]=>
    string(32) "19415f3937cd6079c96e5141fe99bc49"
    ["created_at"]=>
    object(DateTime)#39 (3) {
      ["date"]=>
      string(19) "2012-06-09 18:49:02"
      ["timezone_type"]=>
      int(2)
      ["timezone"]=>
      string(1) "Z"
    }
  }
  ["_unsavedKeys":protected]=>
  array(0) {
  }
  ["_errors":protected]=>
  NULL
  ["_href":protected]=>
  string(37) "https://api.recurly.com/v2/accounts/1"
  ["_client":protected]=>
  object(Recurly_Client)#27 (2) {
    ["_apiKey":"Recurly_Client":private]=>
    NULL
    ["_acceptLanguage":"Recurly_Client":private]=>
    string(5) "en-US"
  }
  ["_links":protected]=>
  NULL
}

2 个答案:

答案 0 :(得分:0)

对于非标准编码字符,请仔细检查使用print_r打印的值。

答案 1 :(得分:0)

这是我最近为CakePHP 2.3修复的内容(需要PHP 5.3+)。

之前,您只会看到该对象的公共属性。使用当前的2.3头和我的增强功能,您还将看到所有受保护和私有属性(使用反射 - 哪个print_r可以原生地提供)。

您可以在此处查看门票:http://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/3095-enable-debuggerexportvar-to-display-protected-and-private-class-properties#ticket-3095-3