/** * Register a class loader as a delegate * * @param lang.IClassLoader l * @param bool before default FALSE whether to register this as the first loader * @return lang.IClassLoader the registered loader */ public static function registerLoader(IClassLoader $l, $before = false) { $id = $l->instanceId(); if ($before) { self::$delegates = array_merge([$id => $l], self::$delegates); } else { self::$delegates[$id] = $l; } if (!isset(self::$modules[$id]) && $l->providesResource('module.xp')) { self::$modules[$id] = Module::$INCOMPLETE; try { self::$modules[$id] = Module::register(self::declareModule($l)); } catch (Throwable $e) { unset(self::$delegates[$id], self::$modules[$id]); throw $e; } } return $l; }
public function removes_registered_module() { $module = new Module('xp-framework/loaded1', $this->cl); Module::register($module); Module::remove($module); $this->assertFalse(Module::loaded($module->name())); }