You are here: Re: real world singleton class example? « PHP Programming Language « IT news, forums, messages
Re: real world singleton class example?

Posted by Jerry Stuckle on 12/04/06 13:29

Erwin Moller wrote:
> 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
>
>
>

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@attglobal.net
==================

 

Navigation:

[Reply to this 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

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