DBIx-FlexibleBinding
view release on metacpan or search on metacpan
lib/DBIx/FlexibleBinding.pm view on Meta::CPAN
use strict;
use warnings;
use MRO::Compat 'c3';
package DBIx::FlexibleBinding;
our $VERSION = '2.0.4'; # VERSION
# ABSTRACT: Greater statement placeholder and data-binding flexibility.
use DBI ();
use Exporter ();
use Message::String ();
use Scalar::Util ( 'reftype', 'blessed', 'weaken' );
use Sub::Util ( 'set_subname' );
use namespace::clean;
use Params::Callbacks ( 'callback' );
use message << 'EOF';
CRIT_EXP_AREF_AFTER Expected a reference to an ARRAY after argument (%s)
CRIT_UNEXP_ARG Unexpected argument (%s)
CRIT_EXP_SUB_NAMES Expected a sub name, or reference to an array of sub names
CRIT_EXP_HANDLE Expected a %s::database or statement handle
CRIT_DBI A DBI error occurred\n%s
CRIT_PROXY_UNDEF Handle (%s) undefined
lib/DBIx/FlexibleBinding.pm view on Meta::CPAN
my ( $package, $fqpi, @args ) = @_;
return $proxies{$fqpi}
unless @args;
if ( @args == 1 ) {
unless ( $args[0] ) {
undef $proxies{$fqpi};
return $proxies{$fqpi};
}
if ( blessed( $args[0] ) ) {
if ( $args[0]->isa( "$package\::db" ) ) {
weaken( $proxies{$fqpi} = $args[0] );
}
elsif ( $args[0]->isa( "$package\::st" ) ) {
weaken( $proxies{$fqpi} = $args[0] );
}
else {
CRIT_EXP_HANDLE( $package );
}
return $proxies{$fqpi};
}
}
if ( $args[0] =~ m{^dbi:}i ) {
$proxies{$fqpi} = $package->connect( @args )
or CRIT_DBI( $DBI::errstr );
( run in 0.667 second using v1.01-cache-2.11-cpan-65fba6d93b7 )