[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]

Re: On Pseudohashes



On Mon, Jan 17, 2000 at 07:08:52AM -0700, Tom Christiansen wrote:
> >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? 

Yes. If C had declared

sub m;

Then during the initial method lookup it would be found and AUTOLOAD
would be called in C, and so B::AUTOLOAD would never get called.


References to:
Tim Bunce <Tim.Bunce@ig.co.uk>
Tom Christiansen <tchrist@chthon.perl.com>

[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]