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
==================*/