/** * @covers Xoops\Core\Handler\Factory::registerScheme * @covers Xoops\Core\Handler\Factory::create */ public function testRegisterScheme() { $this->object->registerScheme('testscheme', '\\Xoops\\Core\\Handler\\Scheme\\FQN'); $handler = $this->object->create('testscheme:testname', null, true); $this->assertNull($handler); $this->setExpectedException('\\Xoops\\Core\\Exception\\InvalidHandlerSpecException'); $this->object->create('testscheme2:testname', null, true); }
/** * Get Module Handler * * @param string|null $name name of handler * @param string|null $module_dir dirname of module * @param boolean $optional true if failure to load handler should be considered a warning, not an error * * @return XoopsObjectHandler|XoopsPersistableObjectHandler|bool */ public function getModuleHandler($name = null, $module_dir = null, $optional = false) { // if $module_dir is not specified if (!isset($module_dir)) { // if a module is loaded if ($this->module instanceof XoopsModule) { $module_dir = $this->module->getVar('dirname', 'n'); } else { trigger_error('No Module is loaded', E_USER_ERROR); } } else { $module_dir = trim($module_dir); } $name = !isset($name) ? $module_dir : trim($name); if (!isset($this->moduleHandlers[$module_dir][$name])) { if (!isset($this->handlerFactory)) { $this->handlerFactory = HandlerFactory::getInstance(); } $handler = $this->handlerFactory->create($name, $module_dir, $optional); if ($handler === null) { $this->logger()->log(LogLevel::WARNING, sprintf('No handler for %s exists in module %s', $name, $module_dir)); } $this->moduleHandlers[$module_dir][$name] = $handler; } return $this->moduleHandlers[$module_dir][$name]; }