Richard Clamp > Class-DBI-BaseDSN-1.22 > Class::DBI::BaseDSN

Download:
Class-DBI-BaseDSN-1.22.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 1.22   Source  

NAME ^

Class::DBI::BaseDSN - DSN sensitive base class

SYNOPSIS ^

  package My::DBI;
  use base 'Class::DBI::BaseDSN'; # we'll decide later what our real
                                   # parent class will be
  __PACKAGE__->set_db( Main => $ENV{TESTING} ? @test_dsn : @real_dsn );

DESCRIPTION ^

Class::DBI::BaseDSN acts as a placeholder for a base class which will be switched for a specific Class::DBI extension when you specify the dsn of the database to connect to.

For example in this case, the Class::DBI::BaseDSN will replace itself with Class::DBI::mysql when the set_db call is executed.

 package Example::DBI;
 use base 'Class::DBI::BaseDSN';
 __PACKAGE__->set_db( Main => 'dbi:mysql:example', 'user', 'pass' );

Since this happens at runtime you could pass the dsn as a variable and so have it use a completely different extension automatically. This is especially useful for testing, or for applications where dsn may be a configuration option.

If there is no matching extension found, Class::DBI::BaseDSN replaces itself with Class::DBI.

AUTHOR ^

Richard Clamp <richardc@unixbeard.net>

THANKS ^

Thanks go to Michael Schwern for a snippet to fake out caller, and for hashing out some of the finer points of the approach on the cdbi-talk list.

SEE ALSO ^

Class::DBI

syntax highlighting: