For example, it is possible to extend the row class and add business
logic such as validation to it. Or the row can act as a value object
(vo pattern), and be passed through the controller and view layers.
One observation: if the row class have business logic, it is more like
the Active Record pattern (in fact, the Row Gateway pattern can be
'transformed' into something like an Active Record pattern, if you add
business logic to it - a hybrid? ).
And if the table class have business logic, it is more like the Table
Module pattern (but I think it is better to use the table as a gateway
in this case, with separate classes for business logic and table gateway).
I often feel confused how to use the table and row from ZF with all
these patterns... Someone know a simple way? Or a simple way to decide it?
In Rails for example, everyone uses Active Record, because it is the
only thing. But with ZF, the table and row gateways can be used with
other patterns: Table Module, Domain Model, etc...
Regards,
Paulo
I prefer, when possible, to use only the framework classes, to
maintain code simple. It is not a problem to encapsulate the model
layer into database and row classes or to write other classes for vo's
or for business logic only... The model neither only the vo classes,
nor only the data classes. The important thing is to build, with all
these classes, a layer.
Regards,
Paulo
Greg Frith escreveu:
Thanks Bill,
I've just about come to this conclusion myself having read through
the great thread suggested by Karol.
Essentially now I know there is no one best way of doing things.
Many thanks, Greg Frith.
On 20 Jul 2007, at 16:52, Bill Karwin wrote:
Right; I don't believe it's appropriate to assume that a "model" can
simply extend a table or row object. It's better to write your own
model class, extending nothing, that may use a table or row object, and
may also use other sources of data, such as a SOAP service.
Regards,
Bill Karwin
-----Original Message-----
From: Greg Frith [mailto:[EMAIL PROTECTED] Sent: Friday,
July 20, 2007 4:35 AM
To: [email protected] <mailto:[email protected]>;
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
Subject: [fw-general] Data models
Hi list,
A request for thoughts/advice if I may. I have an entity which I
wish to model, let's say for now it's a car. I want to be able to
use a 'car' object (or list of car objects) in my view. For
example $car->colour, $car->engineSize.
Now, some of the information my site presents about the car comes
from a SOAP web service running on another server, and some
additional information comes from a local MySQL database. I
understand all the Zend_Db_* classes and how I might use them to
model my database car info. But I'm not too sure how to create an
object that represents a car combining information from both the
Web Service and the database.
If for example I was to extend Zend_Db_Table_Row_Abstract to
represent the car, could I add additional public fields to hold the
data obtained through the Web Service without creating problems
when I use ->save and such methods?
Or would I perhaps be better creating a car class that doesn't
extend Zend_Db_Table_Row_Abstract. Then either use the basic
Zend_Db class's or extend them slightly to do the DB work for a
car. Calling the various find and save methods from the car class?
Thoughts?
Many thanks, Greg Frith.
--
Greg Frith
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> : +44 7970 925 257
MSN: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
Jabber: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
Skype: gregfrith