NYCPHP Meetup

NYPHP.org

[nycphp-talk] How to create a singleton class in PHP

Dan Cech dcech at phpwerx.net
Thu Feb 12 13:40:06 EST 2004


Ok, now we have something that works!  Which one works?

Both should function just fine, in each case there should only ever be 
one instance of the $errorArray variable, whether it is a static or global.

The reason the code is much simpler than what you had previously is that 
it is not designed to try and store an instance of ActionHandler, but 
only an instance of the errorArray variable.

Dan

Phil Powell wrote:
> Dan Cech wrote:
> 
>> Hmm, that is very similar to the GLOBALS kludge I posted, although it 
>> doesn't work on my machine.  Each subsequent call to setErrorArray is 
>> overwriting the error array.
>>
>> Thus far the best I've got is:
>>
>> class ActionHandler {
>>   function &getErrorArray () {
>>     return ActionHandler::setErrorArray ();
>>   }
>>
>>   function &setErrorArray ($additionalErrorArray = NULL) {
>>     static $errorArray = array ();
>>
>>     if ( is_array ($additionalErrorArray) ) {
>>       $errorArray += $additionalErrorArray;
>>     }
>>
>>     return $errorArray;
>>   }
>> }
>>
>> and for the $GLOBALS kludge:
>>
>> class ActionHandler {
>>   function &getErrorArray () {
>>     return ActionHandler::setErrorArray ();
>>   }
>>
>>   function &setErrorArray ($additionalErrorArray = NULL) {
>>     if ( !isset ($GLOBALS['errorArray']) ) {
>>       $GLOBALS['errorArray'] = array ();
>>     }
>>
>>     if ( is_array ($additionalErrorArray) ) {
>>       $GLOBALS['errorArray'] += $additionalErrorArray;
>>     }
>>
>>     return $GLOBALS['errorArray'];
>>   }
>> }
>>
>> Both of those functions work 100% for anything I've thrown at them. 
> 
> It works on mine as well.  How it works is a mystery to me, how is it 
> working?
> 
> Phil




More information about the talk mailing list