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

>

Reply via email to