Reply to Re: real world singleton class example?

Your name:

Reply:


Posted by Erwin Moller on 12/04/06 11:02

Jerry Stuckle wrote:

> 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?
>

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

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация