On Tue, Sep 27, 2005 at 11:28:57AM -0700, Terrence Brannon wrote:
> On 9/27/05, Chuck Fox <[EMAIL PROTECTED]> wrote:
> 
> > I have a subclassed DBI module
> 
> subclassing DBI is tough!

This is off-topic, but please don't spread this meme. Subclassing any
factory-based set of classed just takes a little extra work.
Just a little - and the DBI has made it just about as easy as possible.

As per the DBI docs, here's an example that subclasses the DBI,
including database and statement handles:

  package MySubDBI;

  use strict;

  use DBI;
  use vars qw(@ISA);
  @ISA = qw(DBI);

  package MySubDBI::db;
  use vars qw(@ISA);
  @ISA = qw(DBI::db);

  sub prepare {
    my ($dbh, @args) = @_;
    my $sth = $dbh->SUPER::prepare(@args)
        or return;
    $sth->{private_mysubdbi_info} = { foo => 'bar' };
    return $sth;
  }

  package MySubDBI::st;
  use vars qw(@ISA);
  @ISA = qw(DBI::st);

  sub fetch {
    my ($sth, @args) = @_;
    my $row = $sth->SUPER::fetch(@args)
        or return;
    do_something_magical_with_row_data($row)
        or return $sth->set_err(1234, "The magic failed", undef, "fetch");
    return $row;
  }

So instead of just one class you need two more, one with ::db appended and
one with ::st appended.  Hardly rocket science.

Tim.

Reply via email to