Tim Starling tstarling@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?
On 29/04/11 23:52, Greg Sabino Mullane wrote:
Tim Starling tstarling@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
mediawiki-l@lists.wikimedia.org