Re: real world singleton class example?
- From: Jerry Stuckle <jstucklex@xxxxxxxxxxxxx>
- Date: Mon, 04 Dec 2006 08:29:02 -0500
Erwin Moller wrote:
Jerry Stuckle wrote:
Erwin Moller wrote:
Jerry Stuckle wrote:
d.adamkiewicz@xxxxxxxxx wrote:
Hello Folks
Anybody can show me real world singleton class example?
Something that works (is implemented) as part of working solution.
Does it make sense to create database handler class that way?
Regards
Darek
Darek,
I've used them for database classes before. It allows me to have
multiple classes (representing my business-layer logic) using the same
instance without worrying about whether the object has been previously
defined or used.
Because of the transactional nature of web pages, they aren't as useful
as in other programs. But they still have a use.
Jerry,
We once had a 'discussion' about this that ended in a ... well... not too
nice. :-)
So let me try again. (I am not trying to start flaming again, but I am
curious because I am afraid I am missing something.)
My confusion/question:
What is the use of a singleton is when running PHP?
I completely understand (and used) the concept in Java (J2EE), but I fail
to see the advantage of a singleton in PHP, since PHP is executing
'per-page'.
I can see the advantage of PHP connectionpooling (behind the scenes), but
why make a singleton for db-connect?
As far as I understand, you can use the same connection many times on the
same page, so what is the singleton adding to it?
TIA!
Regrads,
Erwin Moller
Hi, Erwin,
Ok, let's take the following scenario - I'll keep it to the
database/table level to keep it simple; normally I would have business
object which access multiple tables instead of mimicking the tables
themselves. But in a more complicated process I would have the business
objects on a layer above the tables
class database1
constructor
connect()
disconnect()
class table1
constructor
insert()
remove()
query()
class table2
constructor
insert()
remove()
query()
Now,
table1 and table2 tables within the database. On any single page you
may use table1, table2 or both.
You could create a database1 object and pass it to the constructor of
table1 and table2, but that would be needless overhead in the program -
it shouldn't have to worry about database1, only the table1 and table2
it needs.
You could have table1 and table2 each connect to the database, but where
you use both tables on the same page, that's a needless extra connection.
So, you create a getSingleton() member in database1. Now the
constructors for table1 and table2 can call database1::getSingleton();
if an object of the class doesn't exist, it is created. If it does
exist, the object is reused.
Does this help?
Hi,
That makes sense in your described setup.
Allthough passing the connectionObject around can be used too (as you described).
Thanks for the input.
Regards,
Erwin Moller
Yes, you can pass around a connectionObject. But arguably this places an additional, unnecessary requirement on the program itself.
Preferably, the program shouldn't have to worry about passing around the connectionObject if the program has no need for it. IOW, the classes should handle what they can - and only require data from the program which only the program can supply (i.e. search parameters).
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@xxxxxxxxxxxxx
==================
.
- References:
- real world singleton class example?
- From: d . adamkiewicz
- Re: real world singleton class example?
- From: Jerry Stuckle
- Re: real world singleton class example?
- From: Erwin Moller
- Re: real world singleton class example?
- From: Jerry Stuckle
- Re: real world singleton class example?
- From: Erwin Moller
- real world singleton class example?
- Prev by Date: Re: php 5 classes: public, protected and private
- Next by Date: Re: -> PHP4 Singleton implementation question <-
- Previous by thread: Re: real world singleton class example?
- Next by thread: Re: real world singleton class example?
- Index(es):
Relevant Pages
|