Index: branches/unlabeled/unlabeled-1.12.10/core/kernel/utility/factory.php =================================================================== diff -u -r4350 -r4356 --- branches/unlabeled/unlabeled-1.12.10/core/kernel/utility/factory.php (.../factory.php) (revision 4350) +++ branches/unlabeled/unlabeled-1.12.10/core/kernel/utility/factory.php (.../factory.php) (revision 4356) @@ -213,15 +213,14 @@ 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) { if (!is_array($dependecies)) $dependecies = array($dependecies); - foreach($dependecies as $required_class) - { + foreach ($dependecies as $required_class) { $this->registerDependency($real_class, $required_class); } } @@ -239,7 +238,11 @@ */ function registerDependency($depended_class, $class_name) { - if (!in_array($this->realClasses[$class_name], $this->Dependencies[$depended_class])) { + $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]; } }