Le dim. 18 août 2019 à 11:59, Benjamin Morel <benjamin.mo...@gmail.com> a écrit :
> Hi Internals, I just noticed the following behaviour: > > class A { > public int $a; > public ?int $b; > public ?int $c = null; > } > > $a = new A; > > var_export(get_object_vars($a)); > var_export(get_class_vars('A')); > > Result: > > array ( > 'c' => NULL, > ) > array ( > 'a' => NULL, > 'b' => NULL, > 'c' => NULL, > ) > > Is this discrepancy expected? IMO get_object_vars() does the right thing > and does not include uninitialized properties in the result array. > > OTOH, get_class_vars() returns null when the property is uninitialized, > which I think is confusing (especially when null is not a valid value for > the property), and I feel like this does not respect the documented > contract: "get_class_vars — Get the default properties of the class" when > null is *not* the default value. > > I did not file a bug yet as I wanted to gather some feedback first. > Thank you. > > — Benjamin > See https://bugs.php.net/78319 get_class_var() does the most useful thing, thus the correct one to me and the use cases I have. Nicolas >