|
Posted by Jerry Stuckle on 12/01/06 20:36
Erwin Moller wrote:
> Jerry Stuckle wrote:
>
>
>>d.adamkiewicz@i7.com.pl 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?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Navigation:
[Reply to this message]
|