[Dbix-class] DBIx::Class creating get_* and set_* methods

Matt S Trout dbix-class at trout.me.uk
Fri Feb 8 08:15:07 GMT 2008


On Thu, Feb 07, 2008 at 10:33:37PM -0700, Steve Kirkup wrote:
> Hello,
> 
> I created a post on Perl Monks regarding this 
> question(http://www.perlmonks.org/?node_id=666868) and someone referred 
> to this mailing list.
> 
> This was my post verbatim,
> -----------------------
> 
> I was looking to DBIx::Class 
> <http://search.cpan.org/search?mode=module&query=DBIx%3A%3AClass> to 
> work with my database. The one thing I would like to change is the 
> accessor/mutators that it auto generates. Instead of the typical,
> 
> # Accessor method
> $object->username;
> 
> # mutator method
> $object->username('bob');
> 
> I want to methods that begin with 'get_' or 'set_' (depending on their 
> functionality).
> 
> # Accessor method
> $object->get_username;
> 
> # mutator method
> $object->set_username('bob');
> 
>
> Has anyone done anything for this for DBIx::Class?

No, because we're perl programmers, not Java programmers :)

But it's not hard - you want to override register_column. Something like

sub register_column {
  my $class = shift;
  my ($col, $info) = @_;
  $info->{accessor} = undef;
  $class->mk_group_ro_accessors($col => "get_$col");
  $class->mk_group_wo_accessors($col => "set_$col");
  $class->next::method(@_);
}

should do the trick fine.

-- 
      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 DBIx-Class mailing list