On Tue, Mar 02, 2010 at 05:08:21PM -0800, David E. Wheeler wrote:
Howdy,
I've just committed r13835, which documents Callbacks. Yay! A few notes:
Great. Thanks!
* Tim, you earlier said:
I could arrange for Callbacks to only apply to methods called by the
applicationi, and not to 'nested calls'. That's a fairly major change
after this length of time but given the limited use Callbacks have had,
and the lack of documentation, it's not out of the question.
The downside is that to intercept all fetched rows in a general way
(like some kind of plugin utility module might want to do) you now have
to add callbacks for 7 $sth fetch* methods and 6 $dbh select* methods.
Is that really preferable?
And I replied:
Well, yes. But if there were 'fetch*' and 'select*' keys that could go to
all of them at once, that would be cool, too.
I don't know if you've changed anything here.
Nope. No changes there.
Even earlier, you wrote:
If you're applying a callback to the fetch method and then your code
calls fetchrow_hashref, for example, how do you know if the driver's
fetchrow_hashref() method calls fetch() or fetchrow_arrayref()?
The fetch and fetchrow_arrayref method are typically aliased by the
driver, but they're two separate methods from the DBI dispatcher's point
of view.
Applying the same callback to both is a reasonable approach.
I'm not sure what you decided to do about this, either. But I do think
that whatever side-effects of such dispatch there are should be
carefully documented as well.
* I tried to include some useful examples, but one is DBD::Pg-specific
and another is DBD::mysql-specific. Hope that's okay.
* I didn't mention anything about the future possibility of
post-method-call callbacks or an OO interface for setting up
callbacks.
I look forward to your edits and comments, and let me know if I can
help with anything else for this release.
I was tempted to leave The cool thing is but opted to drop it as it
doesn't match the tone of the rest of the docs - although they are
rather dry :)
I've made assorted edits and added some extra info. A sanity check would
be most welcome.
Thanks again David!
Tim.