On Fri, 31 May 2002, Barry Hoggard wrote: > Do you have a favorite approach for writing the Model objects? At > Investorama we created a class called TableObject that would deal with > getting/setting values from the database, plus doing data verification > like checking for values being present and well-formed XML in fields > that needed it. I still use that approach on my consulting projects. > It's not a very complex object, and it doesn't do things recursively, > like mapping an attribute to an object and handling that object as well. > > TableObject doesn't act as a base class. It just becomes one of the > attributes of the object. > > A typical invocation is something like this: > > my %fields = ( > id => { type => 'num', pkey => 1, sequence => 'seq_users' }, > email => { type => 'string', required => 1 }, > password => { type => 'string', required => 1 }, > first_name => { type => 'string', required => 1 }, > last_name => { type => 'string', required => 1 }, > valid => { type => 'num', required => 1}, > member_id => { type => 'num' }, > ); > > my $table = NAIC::TableObject->new(DBH => $self->dbh, > OBJECT => $self, > TABLE => 'users', > FIELDS => \%fields, > VERIFY => 1); > > $table is then put into $self as an attribute called '_table'. > Storing/retrieving/verifying are done with $self->_table->store etc. It > expects that the attributes of an object like $self->email match the > database columns.
Alzabo could handle a _lot_ of this for you. Class::DBI could handle some of it (though less). People should use one of those (and check out poop.sf.net for more options) rather than re-inventing the wheel. -dave /*================== www.urth.org we await the New Sun ==================*/