Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^4: OO, inheriting functions from other packages

by jeffa (Bishop)
on Jul 22, 2004 at 23:21 UTC ( [id://376752]=note: print w/replies, xml ) Need Help??


in reply to Re^3: OO, inheriting functions from other packages
in thread OO, inheriting functions from other packages

Or more succintly, "favor object composition over class inheritance."

And yes, i agree that this is good place to honor that rule, but i would code it the other way around, that is, instead of a DBI having a Calendar, the Calendar should have the DBI:

package MyCalendar; use MyDBI; sub new { ... $self->{'_dbh'} = MyDBI->connect( ... ); ... }
And connect() should only create a new database connection if an existing database connection does not already exist (that is, MyDBI is a Singleton or behaves like one). Or, as dragonchild suggests, you could simply pass the database connection to the object in question when you instantiate it. But either way, the Object hasa database connection, and the client can (theoretically) not have to learn SQL. ;)

Disclaimer: In reality, i think plain ole DBI's selectall_arrayref() with the {Slice => {}} attribute function parameter offers plenty of power, flexibility, and maintainability, and it takes less time to develop with. But as always, Your Mileage May Vary and There Is Always More Than One Way To Do It.

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://376752]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2024-04-25 21:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found