Class::Method::Cannot?

Matt S Trout dbix-class at trout.me.uk
Sat May 3 22:45:19 BST 2008


On Mon, Apr 28, 2008 at 04:13:29PM -0500, Ian Malpass wrote:
> Peter Corlett wrote:
> >On Mon, Apr 28, 2008 at 11:41:01AM -0500, Ian Malpass wrote:
> >[...]
> >>I want to inherit from a base class, but I want to not inherit methods
> >>foo() and bar(). I could over-ride these with methods that die(), but
> >>can() would still see them.
> >
> >In that case, you do not want to inherit from a base class. You want to
> >encapsulate it in another class that only exposes the API that you wish to
> >expose.
> 
> Actually, in the particular case of the problem I'm working on now, I 
> think I'm going to add in another base class to inherit from, and the 
> subclass that doesn't want those methods won't use that base class.
> 
> But that approach won't work all the time - is there anything out on 
> CPAN that helps with the encapsulate-and-expose approach? Or any design 
> recommendations?

use Moose;

has _wrapped => (isa => 'Some::Class', handles => qr/^(?!method1$|method2$)/);

That'll delegate every method except for method1 and method2 :)

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://chainsawblues.vox.com/            http://www.shadowcat.co.uk/servers/


More information about the london.pm mailing list