Le dim. 18 août 2019 à 11:59, Benjamin Morel <[email protected]> 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
>