On 29/04/11 23:52, Greg Sabino Mullane wrote:
Tim Starling <tstarling(a)wikimedia.org> wrote:
You could add a static function to User which
provides the field name
array. If it were used in User::loadFromDatabase(), then it would be
immune to bit rot.
Dug into this a little bit, but is it promised that loadFromDatabase will
be called early enough? Such as the case of a non-logged in user getting
a list of contributions for an article?
I'm not sure what you mean. In your sample code, UserArray was used,
which will create User objects with User::newFromRow().
User::loadFromDatabase() won't be used in that case, it's only used
for cases where the user ID is known but the rest of the data isn't.
The reason it's important to use the new method, say
User::getFieldNames(), in User::loadFromDatabase() is so that when new
fields are added, they have to be added to User::getFieldNames() or
else they won't be accessible in User::loadFromRow() in the most
common cases. The developer will have to add the field to the field
list, or else it won't work at all.
We want to avoid introducing a field list which is used only in
rarely-tested code, because such field lists are likely to be poorly
maintained.
-- Tim Starling