Dmitri wrote:
Is there a clean way to share data from class in a role?
If it was an object method I would probably set up attribute for that, but it's a class method.


package FN::Utils;

use Moose::Role;

# class method
sub some_db_op {

need $TABLE from consuming class here

}

package FN::User;

use Moose;
with qw(FN::Utils FN::Contact);

my $TABLE = 'fnuser';

.....

You could actually use a (class) method instead of "my $TABLE". Something like:

package FN::Utils;
use Moose::Role;
requires '_table';
sub some_db_op {
    my $self = shift;
    # call $self->_table somewhere
    # ...
}

package FN::User;
use Moose;
with qw(FN::Utils FN::Contact);
sub _table { 'fnuser' }


For another way to associate a SQL table with a Moose class, see Fey::ORM.

-Todd

Reply via email to