NAME
Class::DBI::BaseDSN - DSN sensitive base class
SYNOPSIS
package
My::DBI;
# 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;
__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.