2010-09-21 1 views
10

Когда я var_dump объект, результат выглядит следующим образом:Вопрос о выходе 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) после # означает?

ответ

8

Это уникальный идентификатор, связанный с этим конкретным экземпляром 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 
    
+1

Для добавления, на каждой конкретизации, это число увеличивается. Если экземпляр удаляется (не задан), этот экземпляр # будет повторно использоваться для следующего экземпляра. – webbiedave

+1

Кроме того, это не идентификатор экземпляра определенного класса, а любого класса. – webbiedave

+1

Означает ли это, что 2477 объектов были инициализированы по всему сценарию? : O – Daniel

 Смежные вопросы

  • Нет связанных вопросов^_^