Index: trunk/core/kernel/utility/factory.php =================================================================== diff -u -r3654 -r4358 --- trunk/core/kernel/utility/factory.php (.../factory.php) (revision 3654) +++ trunk/core/kernel/utility/factory.php (.../factory.php) (revision 4358) @@ -208,19 +208,19 @@ * @param Array $dependecies List of classes required for this class functioning * @access public */ - function registerClass($real_class,$file,$pseudo_class=null, $dependecies = Array() ) + function registerClass($real_class, $file, $pseudo_class=null, $dependecies = Array() ) { 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) ) - { + if (getArrayValue($this->realClasses, $pseudo_class)) { $this->registerDependency($real_class, $pseudo_class); } + if($dependecies) { - foreach($dependecies as $required_class) - { + if (!is_array($dependecies)) $dependecies = array($dependecies); + foreach ($dependecies as $required_class) { $this->registerDependency($real_class, $required_class); } } @@ -238,7 +238,13 @@ */ function registerDependency($depended_class, $class_name) { - $this->Dependencies[$depended_class][] = $this->realClasses[$class_name]; + $conditions = Array(); + $conditions['exists'] = in_array($this->realClasses[$class_name], $this->Dependencies[$depended_class]); + $conditions['same_class'] = $this->realClasses[$class_name] == $depended_class; + + if (!$conditions['exists'] && !$conditions['same_class']) { + $this->Dependencies[$depended_class][] = $this->realClasses[$class_name]; + } } }