DBIx::Class::DynamicSubclass

Convenient way to use dynamic subclassing.
Download

DBIx::Class::DynamicSubclass Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Pronin Oleg
  • Publisher web site:
  • http://search.cpan.org/~syber/

DBIx::Class::DynamicSubclass Tags


DBIx::Class::DynamicSubclass Description

Convenient way to use dynamic subclassing. DBIx::Class::DynamicSubclass is a Perl module that offers a convenient way to use dynamic subclassing.SYNOPSIS package My::Schema::Game; __PACKAGE__->load_components(qw/DynamicSubclass Core/); __PACKAGE__->add_column(qw/id name data type/); __PACKAGE__->typecast_map(type => { 1 => 'My::Schema::Game::Online', 2 => 'My::Schema::Game::Shareware', 3 => 'My::Schema::Game::PDA', }); $game = $schema->resultset('Game')->new({..., type => 1}); # ref $game = 'My::Schema::Game::Online' @games = $game->search({type => 2}); # @games are all of class My::Schema::Game::Shareware $game->type(3); # game is now of class My::Schema::Game::PDA $game = $schema->resultset('Game')->new({}); # or $game->type(undef); # game is now of type My::Schema::Game #Dynamic properties with DBIx::Class::FrozenColumns package My::Schema::Game; __PACKAGE__->load_components(qw/... FrozenColumns .../); package My::Schema::Game::Online; use base 'My::Schema::Game'; __PACKAGE__->add_frozen_columns(data => qw/flash server_host server_port/); package My::Schema::Game::Shareware; use base 'My::Schema::Game'; __PACKAGE__->add_frozen_columns(data => qw/price download_url/); ... $game->type(1); #game would have now additional columns 'flash', 'server_host', etc. $game->server_host('...'); #(stored in 'data') $game->type(2); $game->server_host; #error $game->price('$3.00'); #ok $game = $rs->new({ type => 1, flash => 'game.swf', }); #ok #More flexible way package My::Schema::Game; __PACKAGE__->typecast_column('type'); sub classify { #called each time the object gets or losses its 'type' my $self = shift; #decide which class do you want bless $self, $class; } Requirements: · Perl


DBIx::Class::DynamicSubclass Related Software