Re: get_class_vars() and typed properties

From: 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 >

« previous php.internals (#106641) next »