コード例 #1
0
 /**
  * GetModules:  Returns an array of all registered class names which are derived from iUtopiaModule
  */
 static function GetModules($refresh = false)
 {
     if (self::$allmodules === NULL || $refresh) {
         $rows = array();
         $classes = get_declared_classes();
         foreach ($classes as $id => $class) {
             $ref = new ReflectionClass($class);
             if ($ref->isAbstract()) {
                 continue;
             }
             if (!$ref->implementsInterface('iUtopiaModule')) {
                 continue;
             }
             $parents = array_values(class_parents($class));
             $interfaces = $ref->getInterfaceNames();
             $class = array('module_name' => $class);
             $class['module_id'] = $id;
             $class['types'] = array_merge($parents, $interfaces);
             $class['uuid'] = null;
             if ($ref->isSubclassOf('uBasicModule')) {
                 $class['uuid'] = $class['module_name']::GetUUID();
             }
             $rows[$class['module_name']] = $class;
         }
         self::$allmodules = $rows;
     }
     return self::$allmodules;
 }