[development] The array argument in hook_user: can we get rid of it?
Nedjo Rogers
nedjo at islandnet.com
Tue Feb 6 19:34:38 UTC 2007
Unlike our other object hooks (e.g., hook_nodeapi, hook_taxonomy), hook_user
passes two arguments by reference. Both are representations of the user
object, one in array and the other in object format.
There's a lot of interest in streamlining our object handling. I've been
working on a set of generalized object handling methods that build on our
current ones in http://drupal.org/node/113435.
As I dig into this, I'm finding that hook_user's difference from our other
hooks is one of the main barriers. Maintaining this double pass by reference
would force all other object types to do the same, even though they don't
have data they need to pass.
Hence my question: can we change hook_user to behave like the other object
hooks, passing a single argument (the user object) by reference? Pitfalls?
Looking at the implementations in user.module, this double passing looks to
be mainly a matter of convenience--separating out what are parameters to
match (user_load()) or extended user attributes (user_save()) from the base
user object. My hunch is, if they're user data they're user data as far as
hook implementations are concerned, so it shouldn't matter much if they're
passed in a single object. But maybe this is wishful thinking.
I'm thinking a patch to change hook_user to pass a single argument by
preference may be a necessary prior patch to getting a generalized set of
methods in. Thoughts?
More information about the development
mailing list