Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^2: Moose: How to check if a class implements a role? (does)

by Monk::Thomas (Friar)
on Jul 19, 2013 at 07:52 UTC ( #1045287=note: print w/replies, xml ) Need Help??


in reply to Re: Moose: How to check if a class implements a role? (does)
in thread Moose: How to check if a class implements a role?

Thanks. That is exactly what I was looking for. It even works when applying a role during runtime. (This comes quite handy for implementing a dummy backend class which can fake different feature-set. Think something along the line of DBI, where you want to test the DBI class, but not the actual backend like DBD::mysql)

(Moose)

sub BUILD { my $self = shift; my $mode = $self->get_mode(); # normally roles are not used/required, but since we manipulate this # class' roles at runtime we need to require the role if ($mode =~ /R/xmsi) { require TLA::Datastore::_readable; TLA::Datastore::_readable->meta->apply($self); } if ($mode =~ /W/xmsi) { require TLA::Datastore::_writeable; TLA::Datastore::_writeable->meta->apply($self); } if ($mode =~ /X/xmsi) { require TLA::Datastore::_execute; TLA::Datastore::_execute->meta->apply($self); } return; }
And later I can test for a specific role:
my $ds = TLA::Datastore::Dummy->new('mode' => 'R'); if ( $ds->DOES('TLA::Datastore::_readable') ) { # do stuff };

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1045287]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (16)
As of 2017-03-23 19:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (294 votes). Check out past polls.