|
Posted by Gordon on 12/04/07 17:07
On Dec 2, 2:56 pm, Viator <varioustr...@yahoo.com> wrote:
> Hi folks,
>
> I have a basic question. When I do object-oriented programming
> using C++ or Java, all my objects reside in RAM. I do not have
> to think about storing and retrieving them, because they are
> in RAM and that space has been allocated for them and
> the program is continually running, so neither program nor
> objects are going to disappear.
>
> It seems to me, having never done OOP in PHP, that this
> arrangement would not exist in PHP, because program+objects
> only exist when a page is being constructed. In the meantime,
> where are the objects? You might say, "in my MySQL database",
> and that is certainly a capable storage medium, however
> it takes time to get them out, and to store them back into it.
>
> So the question is, I think, appropriate. Since PHP has
> (AFAIK) no object storage other than a database, is
> OOP in PHP really appropriate?
>
> If there is some other storage medium can you tell me what it is?
>
> If there isn't another faster storage medium than a database,
> why doesn't someone create one, to improve efficiency?
>
> Thanks.
OOP is far from just a memory management strategy, it is also about
how code is organized. Building an application out of smaller self-
contained objects and adding functionality through inheritance are
considered good practice in programming these days because it makes it
far more difficult to write unmaintainable spaghetti code that way
(though it is still far from impossible :) ). For example I'm writing
a CMS type application. All the data the CMS will work with has a lot
of things in common (the need for a timestamp and a path to be stored,
for example), but several different classes of objects have different
properties. For example a folder can hold other items whereas a
document cannot, but a document can have written text content whereas
a directory cannot. For this reason I've created a generic CmsItem
class that implements all the functionality that is common to both and
then built a CmsDir and CmsDoc class that both inherit for CmsItem and
which provide functionality pertinant to folders and documents,
respectivly.
The system it is replacing has very little structure and is so
difficult to maintain that it has been decided that a complete rewrite
is a worthwhile exercise.
While an instance will only last for as long as a page generation
operation (you can think of that as a transaction) is in progress, you
can, if you need to, serialize objects and store their props in a
session or the database as needed. Regardless of the approach you
take (OO or SP) you'll still have to store the data you want to
preserve across transactions anyway.
[Back to original message]
|