00001 <?php 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00025 class KjwUtil {
00038         function &getSingleton($className) {
00039                 static $instances = array();  
00040                 assert(is_string($className));
00041                 if (!array_key_exists($className, $instances)) {
00042                         
00043                         if (file_exists(dirname(__FILE__) . "/$className.php"))
00044                                 require_once(dirname(__FILE__) . "/$className.php");
00045                         
00046                         
00047                         
00048                         
00049                         $a = &func_get_args();
00050                         switch (func_num_args() - 1) {
00051                         case 0: $instances[$className] = new $className(); break;
00052                         case 1: $instances[$className] = new $className(&$a[1]); break;
00053                         case 2: $instances[$className] = new $className(&$a[1],&$a[2]); break;
00054                         case 3: $instances[$className] = new $className(&$a[1],&$a[2],&$a[3]); break;
00055                         case 4: $instances[$className] = new $className(&$a[1],&$a[2],&$a[3],&$a[4]); break;
00056                         case 5: $instances[$className] = new $className(&$a[1],&$a[2],&$a[3],&$a[4],&$a[5]); break;
00057                         case 6: $instances[$className] = new $className(&$a[1],&$a[2],&$a[3],&$a[4],&$a[5],&$a[6]); break;
00058                         default: trigger_error('KjwSingleton: too many arguments for getInstance.', E_USER_ERROR);
00059                         }
00060                 }
00061                 return $instances[$className];
00062         }
00063 }
00064 
00065 ?>