Что такое # <some-number> рядом с объектом (someClass) в var_dump объекта? У меня есть вывод. Я прав?

Это код и его вывод, который я использовал для вывода ниже:

class a { public $var1; public $var2; } $obj0 = new a; var_dump($obj0); class b { public $var1; public $var2; public $var3; } $obj1 = new b; var_dump($obj1); $obj2 = new stdClass; var_dump($obj2); $obj3 = new stdClass; var_dump($obj3); $obj4 = new stdClass; var_dump($obj4); $obj5 = new stdClass; var_dump($obj5); var_dump(new stdClass); $obj6 = new stdClass; var_dump($obj6); 

Выход:

 object(a)#1 (2) { ["var1"]=> NULL ["var2"]=> NULL } object(b)#2 (3) { ["var1"]=> NULL ["var2"]=> NULL ["var3"]=> NULL } object(stdClass)#3 (0) { } object(stdClass)#4 (0) { } object(stdClass)#5 (0) { } object(stdClass)#6 (0) { } object(stdClass)#7 (0) { } object(stdClass)#7 (0) { } 

#<some-number> var_dump #<some-number> рядом с object(someClass) линии object(someClass) в var_dump объекта на самом деле #<count> . Где,

count – количество объектов / zval для объектов, независимо от того, к какому классу он принадлежит, который был создан до сих пор. Который продолжает получать инкремент для каждого созданного объекта и уменьшается на 1, когда пересчет zval достигает нуля, т.е. сбор мусора.

Я прав?

Solutions Collecting From Web of "Что такое # <some-number> рядом с объектом (someClass) в var_dump объекта? У меня есть вывод. Я прав?"

Это число Z_OBJ_HANDLE_PP(struc) где struc является zval что приводит к Z_OBJVAL(zval).handle что приводит к (zval).value.obj .

См. Также http://php.net/manual/en/internals2.variables.intro.php

Короче говоря, я бы сказал, что это идентификатор объекта, написанный в десятичной форме ( ref ):

 php_printf("%sobject(%s)#%d (%d) {\n", COMMON, class_name, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0); 

И не количество объектов, когда-либо созданных.

Нет, это внутренняя ссылка на экземпляр объекта, если вы это сделали

 var_dump($obj1); 

опять же, он все равно будет id # 2

РЕДАКТИРОВАТЬ

В случае вашего

 var_dump(new stdClass); 

PHP создает новый экземпляр stdClass и сбрасывает его с помощью var_dump, предоставляя вам экземпляр # 7. Однако, поскольку этот экземпляр является временным (вы не назначаете его какой-либо переменной), он снова уничтожается сразу же после этого, поэтому идентификатор объекта # 7 снова доступен для выделения для следующего объекта, который вы создаете с помощью

 $obj6 = new stdClass;