Hi Stas, Am Donnerstag, 12. Februar 2004 18:49 schrieb Stas Bekman: > > The biggest drawback for me is whenever inherence comes into play it wont > > work. Method_lookup is a hack. It is nice to have, but it whould much > > better if it is not needed at all. > > Do you suggest that AUTOLOAD doesn't work with inheritance? Doesn't it call > the right AUTOLOAD function?
Yes, AUTOLOAD has some drawbacks. During my testing I found two of them imediately. 1. You can not rely on ->can. If I have a object and ask $obj->can('print') The answer is yes it can print, or I do not know maybe we can load print try it! Thats odd. But not a mod_perl issue. 2. EazyLife can not know about my methods, so the option is guess and load all classes with methods that may satisfy me or ignore me. I dislike both and Apache::Request forwards everything unknown to the environ object, but it seems it looks what the object can ( untested ) so nothing is forwarded until the class is loaded. Back to EazyLife: It calls the AUTOLOAD function and in my case it is the right one. But if My class is a new one ( one that is not part of mod_perl ) then ModPerl::MethodLookup simply find nothing and dies. suppose this ( untested and useless ) example: package SuperRequestRec; our @ISA = qw!Apache::RequestRec!; sub new { my $class = shift; return bless shift, $class; } 1; sub handler :method { my ( $c, $r ) = @_; my $sr = SuperRequestRec->new( $r ); $sr->print("Hi"); return DONE; } see this line from EazyLife.pm ModPerl::MethodLookup::lookup_method($AUTOLOAD, @_); $AUTOLOAD may be SuperRequestRec::print and $_[0] is a reference to SuperRequestRec. -- Boris --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]