@ISA = qw(DBI) no worky part II

Randal L. Schwartz merlyn at stonehenge.com
Wed Feb 27 11:45:03 CST 2002


~sdpm~
>>>>> "Chuck" == Chuck Phillips <chuckphillips at mac.com> writes:

Chuck> I'm trying to write a package that inherits from DBI, but am missing
Chuck> something.

You missed reading how to subclass DBI in DBI::DBD - 

SUBCLASSING DBI DRIVERS
       This is definitely an open subject. It can be done, as
       demonstrated by the DBD::File driver, but it is not as
       simple as one might think.

       (Note that this topic is different from subclassing the
       DBI. For an example of that, see the t/subclass.t file
       supplied with the DBI.)

And thus you should look at t/subclass.t for a working example.

The problem is that the object returned by Foo->connect
is not a Foo, but a Foo::db.  And statement handles are Foo::st.
So you added your methods to the wrong classes.  You need:

package Foo; use base qw(DBI); sub additional_constructor { ... }
package Foo::db; use base qw(DBI::db); sub additional_dbh_method { ... }
package Foo::st; use base qw(DBI::st); sub additional_sth_method { ... }

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn at stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
~sdpm~

The posting address is: san-diego-pm-list at hfb.pm.org

List requests should be sent to: majordomo at hfb.pm.org

If you ever want to remove yourself from this mailing list,
you can send mail to <majordomo at happyfunball.pm.org> with the following
command in the body of your email message:

    unsubscribe san-diego-pm-list

If you ever need to get in contact with the owner of the list,
(if you have trouble unsubscribing, or have questions about the
list itself) send email to <owner-san-diego-pm-list at happyfunball.pm.org> .
This is the general rule for most mailing lists when you need
to contact a human.




More information about the San-Diego-pm mailing list