Index: trunk/core/kernel/utility/factory.php =================================================================== diff -u -r2597 -r2600 --- trunk/core/kernel/utility/factory.php (.../factory.php) (revision 2597) +++ trunk/core/kernel/utility/factory.php (.../factory.php) (revision 2600) @@ -1,15 +1,15 @@ $regs[1].$regs[3].$regs[4], 'special'=>$regs[2]); - + $tmp=explode('_',$prefix_special,2); $tmp[0]=explode('.',$tmp[0]); @@ -65,8 +65,8 @@ $prefix_special.='.'.$special; // new2 return Array('prefix'=>$prefix,'special'=>$special,'prefix_special'=>$prefix_special); } - - + + /** * Returns object using params specified, * creates it if is required @@ -78,28 +78,26 @@ */ function &getObject($name,$pseudo_class='',$event_params=Array()) { - // $name = 'l.pick', $pseudo_class = 'l' - //echo 'N: '.$name.' - P: '.$pseudo_class."\n"; $ret=$this->processPrefix($name); if (!$pseudo_class) $pseudo_class = $ret['prefix']; $name=rtrim($name,'.'); if( isset($this->Storage[$name]) ) return $this->Storage[$name]; - + if(!isset($this->realClasses[$pseudo_class])) { if( $this->Application->isDebugMode() ) $GLOBALS['debugger']->appendTrace(); - trigger_error('RealClass not defined for pseudo_class '.$pseudo_class.'', E_USER_ERROR); + trigger_error('RealClass not defined for pseudo_class '.$pseudo_class.'', E_USER_ERROR); } - + $funs_args = func_get_args(); array_splice($funs_args, 0, 3, Array($pseudo_class) ); - + $this->Storage[$name] =& ref_call_user_func_array( Array(&$this,'makeClass'), $funs_args); $this->Storage[$name]->Init($ret['prefix'],$ret['special'],$event_params); - + $prefix=$this->Storage[$name]->Prefix; $special=$this->Storage[$name]->Special; - + $event_manager =& $this->getObject('EventManager'); $event =& $event_manager->getBuildEvent($pseudo_class); if($event) @@ -111,21 +109,21 @@ } $this->Application->HandleEvent($event); } - + return $this->Storage[$name]; } - - + + /** * Removes object from storage, so next time it could be created from scratch * * @param string $name Object's name in the Storage */ function DestroyObject($name) { - unset($this->Storage[$name]); + unset($this->Storage[$name]); } - + /** * Includes file containing class * definition for real class name @@ -136,21 +134,20 @@ function includeClassFile($real_class) { if (class_exists($real_class)) return; - if(!$this->Files[$real_class]) trigger_error('Real Class '.$real_class.' is not registered with the Factory', E_USER_ERROR); if(!file_exists($this->Files[$real_class])) trigger_error('Include file for class '.$real_class.' ('.$this->Files[$real_class].') does not exists', E_USER_ERROR); - + if( $deps = getArrayValue($this->Dependencies, $real_class) ) { foreach($deps as $dep_class_name) { $this->includeClassFile($dep_class_name); } } - + k4_include_once($this->Files[$real_class]); } - + /** * Get's real class name for pseudo class, * includes class file and creates class @@ -166,22 +163,20 @@ { $real_class = $this->realClasses[$pseudo_class]; $this->includeClassFile($real_class); - + $mem_before = memory_get_usage(); $time_before = getmicrotime(); - + if( func_num_args() == 1 ) { - $class = new $real_class(); + $class = new $real_class(); } else { $func_args = func_get_args(); $pseudo_class = array_shift($func_args); - $class =& ref_call_user_func_array( Array($real_class,'makeClass'), $func_args ); } - if( $this->Application->isDebugMode() && dbg_ConstOn('DBG_PROFILE_MEMORY') ) { $mem_after = memory_get_usage(); @@ -194,11 +189,11 @@ } return $class; } - + /** * Registers new class in the factory * - * @param string $real_class Real name of class as in class declaration + * @param string $real_class Real name of class as in class declaration * @param string $file Filename in what $real_class is declared * @param string $pseudo_class Name under this class object will be accessed using getObject method * @param Array $dependecies List of classes required for this class functioning @@ -208,23 +203,22 @@ { if(!isset($pseudo_class)) $pseudo_class = $real_class; if(!isset($this->Files[$real_class])) $this->Files[$real_class]=$file; - + if( getArrayValue($this->realClasses, $pseudo_class) ) { $this->registerDependency($real_class, $pseudo_class); } - if($dependecies) { foreach($dependecies as $required_class) { $this->registerDependency($real_class, $required_class); } } - + $this->realClasses[$pseudo_class]=$real_class; } - + /** * Add $class_name to required classes list for $depended_class class. * All required class files are included before $depended_class file is included @@ -237,7 +231,6 @@ { $this->Dependencies[$depended_class][] = $this->realClasses[$class_name]; } - } ?> \ No newline at end of file