Вопрос о выходе var_dump - PullRequest
       25

Вопрос о выходе var_dump

10 голосов
/ 21 сентября 2010

Когда я var_dump объект, вывод выглядит следующим образом:

object(XCTemplate)#2477 (4) {
  ["id"]=>
  string(1) "1"
  ["attributes"]=>
  array(0) {
  }
  ["db_table_name"]=>
  string(14) "template_names"
  ["cache"]=>
  array(0) {
  }
}

XCTemplate, конечно, его класс, но что означает целое число (здесь: 2477) после #

1 Ответ

8 голосов
/ 21 сентября 2010

Это уникальный идентификатор, связанный с этим конкретным экземпляром XCTemplate.AFAIK это не задокументировано, а также нет способа получить его (кроме использования var_dump());и я посмотрел на класс Reflection.

Из того, что я видел:

  • Идентификаторы уникальны для каждого экземпляра;начиная с 1 и увеличивая на 1 с каждым новым объектом.Это включает в себя каждый объект;они не должны быть одного и того же класса.
  • Уничтожение экземпляра (например, через unset) освобождает его идентификатор, и следующий экземплярный объект может (и будет) использовать его.
  • Он не связан с переменной;Например:

    $foo = new Foo();
    var_dump($foo);
    $foo = new Foo();
    var_dump($foo);
    

    Будет выдавать разные идентификаторы для разных экземпляров.

  • Это не , как идентификаторы ресурсов, где вы можетепреобразовать в int, чтобы получить идентификатор:

    $resource= curl_init();      
    var_dump($resource);       // resource #1 of type curl
    print(intval($resource));  // 1
    print((int) $resource);    // 1
    
...