[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