NYCPHP Meetup

NYPHP.org

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

Phil Powell phillip.powell at adnet-sys.com
Thu Feb 12 13:31:38 EST 2004


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

>
>
> Dan
>
> Phil Powell wrote:
>
>> I found a rather tragic kluge to get my code working again:
>>
>> class ActionHandler {
>>
>> function &ActionHandler() {
>>  static $errorArray = array();
>> }
>>
>> function &getErrorArray() {
>>  return $GLOBALS[$errorArray];
>> }
>>
>> function &setErrorArray($additionalErrorArray) {
>>  if (is_array($additionalErrorArray)) $this->errorArray =& 
>> array_merge($this->errorArray, $additionalErrorArray);
>>  if (!isset($GLOBALS[$errorArray])) $GLOBALS[$errorArray] = 
>> $this->errorArray;
>> }
>>
>> }
>>
>> That produces the results I want every time, and I can't understand 
>> why I must use $GLOBALS[$errorArray] and not $GLOBALS['errorArray'], 
>> am I not mistaken that arrays can only take scalar string and/or 
>> integer values as keys?
>>
>> Phil
>
>
>
> _______________________________________________
> talk mailing list
> talk at lists.nyphp.org
> http://lists.nyphp.org/mailman/listinfo/talk
>


-- 
Phil Powell
Web Developer
  ADNET Systems, Inc.
  11260 Roger Bacon Drive, Suite 403
  Reston, VA  20190-5203
Phone: (703) 709-7218 x107   Cell: (571) 437-4430   FAX: (703) 709-7219
EMail:  Phillip.Powell at adnet-sys.com      AOL IM: SOA Dude








More information about the talk mailing list