Re: get_class_vars() and typed properties
| From: | Nicolas Grekas | Date: | Sun, 18 Aug 2019 10:14:52 +0000 |
| Subject: | Re: get_class_vars() and typed properties | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-106641@lists.php.net to get a copy of this message | ||
Le dim. 18 août 2019 à 11:59, Benjamin Morel <benjamin.morel@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
>