[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]
Re: On Pseudohashes
>It's always been advisable for classes to pre-declare all their methods
>if using AUTOLOAD.
Tim, some time ago something came up about autoloading method calls
that bothered me in an MI scenario. Seems to me you respondedi
similarly then. I'm pretty sure it was the following inheritance
scenario:
A
\
B C @B::ISA = ('A');
\ /
D @D::ISA = ('B', 'C');
Suppose that each of those classes were using autoloading to generate
its attribute accessors. If D->m() is called, and that method m()
is really supposed to be handled iby C, there's no way for B's
autoload to "super" it over to C. Instead, B::SUPER just gets to
ascend to A--which doesn't help. You can never renege on an AUTOLOAD
so that Perl's method lookup would treat that hit as a miss and
then go on to inspect sibling branches of the tree.
Does pre-declaring methods to be handled via AUTOLOAD entirely clear
this matter up? If there some obvious advantage to using AUTOLOAD
over, say, iterated registration of closures in the package symbol
table? In my libertine youth, I would frequently advocate AUTOLOAD
to cover generic accessor methods, but in later years I've grown
to mistrust in the extreme that particular strategy for realistically
complex class hierarchies.
--tom
- Follow-Ups from:
-
Graham Barr <gbarr@pobox.com>
Raphael Manfredi <Raphael.Manfredi@st.com>
Tim Bunce <Tim.Bunce@ig.co.uk>
Nick Ing-Simmons <nik@tiuk.ti.com>
Damian Conway <damian@cs.monash.edu.au>
Damian Conway <damian@cs.monash.edu.au>
- References to:
-
Tim Bunce <Tim.Bunce@ig.co.uk>
[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]