Re: Newbie: Composition by Association - Pagination Class general question.
| From: | Tony Marston | Date: | Sun, 19 Jul 2009 14:56:43 +0000 |
| Subject: | Re: Newbie: Composition by Association - Pagination Class general question. | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-295581@lists.php.net to get a copy of this message | ||
Two things strike me as wrong with your thinking:
(1) The idea that you have a separate DAO for each entity instead of a
single generic DAO which can act for any entity in the system.
(2) The idea that pagination requires its own class, and therefore needs
this "is-a" and "has-a" nonsense.
As for (1) even in my pre-OO days I was used to using a single generic DAO
for all database access. The only time that more than one DAO existed was
for a different DBMS engine. This is why I have one DAO class for MySQL, one
for PostgreSQL and another for Oracle. If you are incapable of writing a
single generic DAO then it just shows that you still have a lot to learn.
For an idea on how this works take a look at
http://www.tonymarston.net/php-mysql/databaseobjects.html
As for (2) it should be obvious that pagination is not an entity in its own
right that has its own properties and methods, it is merely a function which
can be performed on any entity within the system. It should also be obvious
that the requirements of pagination cannot be satisfied in a single class as
some of the processing has to be handled in the presentation (UI) layer
while the remainder is handled in the data access layer. The presentation
layer needs a means to submit a request for a particular page number as well
as the page size (rows per page). These two values are sent to the DAO which
then translates them into values for LIMIT and OFFSET. After the DAO has
issued the sql SELECT statement it needs to return two values - the current
page number and the last available page number. The presentation layer then
needs a mechanism to display these two values. This is explained in
http://www.tonymarston.net/php-mysql/pagination.html
If you still don't see how this works then you can run my sample application
at http://www.tonymarston.net/php-mysql/sample-application.html
You can even
download the code so that you can step through it with your debugger.
--
Tony Marston
http://www.tonymarston.net
http://www.radicore.org
""MEM"" <talofo@gmail.com> wrote in message
news:000701ca0867$992912e0$cb7b38a0$@com...
Hello,
I have a Animals DAO class that I'd like to apply a pagination class to it.
Between this two classes, there will be a composition relation (more
precisely, an association one). My question is:
Is a Pagination that "has a" Animal. OR Is a Animal that "has a" pagination?
Should we create on Class Pagination a property named $_animal OR, should we
create on class Animal a property named $_pagination?
I'm inclined to accept the second one, since, if I put the property $_animal
on my classe Pagination, I will end up, on the Pagination Class, with so
many properties as pagination objects... :s
Any help please?
Márcio