Stuff with the Perl Foundation. A couple of patches in the Perl core. A few CPAN modules. That about sums it up.
Trying to figure out the source of a method in one of our Catalyst controllers. Our controller inherited from one of our controller base classes. That, in turn, inherited from the deprecated Catalyst::Base which, in turn, does nothing but inherit from Catalyst::Controller, which inherits from three different classes. Two of those inherit from two classes each, which in turn
Let's see if I can figure this out our inheritance heirarchy so I can tell where that method is coming from:
Our::Controller
Our::ControllerBase
Catalyst::Base (deprecated passthrough)
Catalyst::Controller
Catalyst::Component
Class::Accessor::Fast
Class::Accessor
Class::Data::Inheritable
Catalyst::AttrContainer
Class::Accessor::Fast
Class::Accessor
Class::Data::Inheritable
Class::Accessor::Fast
Class::Accessor
Catalyst::Controller::REST
Catalyst::Controller
Catalyst::Component
Class::Accessor::Fast
Class::Accessor
Class::Data::Inheritable
Catalyst::AttrContainer
Class::Accessor::Fast
Class::Accessor
Class::Data::Inheritable
Class::Accessor::Fast
Class::Accessor
Got that?
On the off chance that you're a Multiple Inheritance fanboy, I don't think I'm going to say anything right now. I'm on the verge of profanity. MI is a tool of last resort (no, I'm not saying it's always the wrong answer). Today there are so many excellent alternatives that you really have no excuse for using MI other than "I don't like change".
Err... (Score:1)
? Of course, that doesn't help with finding its super-methods, and if it does funny classless things then you'd need to instantiate an object. (Pause for a moment to hate the fact that perl parses
as a call to
Re: (Score:2)
Actually, I use my Sub::Information [cpan.org] as it groups the info I need about subs in one spot. That being said, I typically don't reach for it as a first resort. I see a method or sub and I have the code open in my editor and I look for it. I only use tricky code when I'm really stuck because manually looking for code gives me a greater understanding of the overall code base. That's when I saw our lovely diamond inheritance which itself has diamonds further down :(
Don't read it, look at it (Score:1)
NEXT (Score:1)
Re: (Score:2)
Yes, they do, but not all of our code does. However, MI is still a bad and fragile thing. It frequently introduces inappropriate compositions because it's a seductively easy (read: bad lazy) way of sharing behavior.
Re: (Score:1)
Re: (Score:1)
The plan, it seems, is to eventually rewrite Catalyst with Moose. (Originally the plan was to use C3 instead of NEXT, but that work was never completely finished.)
Re: (Score:1)