public function setModule($name, $module=null)
	{
	    if (!$module) {
	        $module = $name;
	    }
	    
	    if ($module instanceof Module) {
	        $name  = $module->getName();
	        $alias = $module->alias;
	    } else {
	        if (is_string($module)) {
	            $module = ['basePath' => $module];
	        } elseif (is_array($module)) {
	            if (!isset($module['basePath'])) {
	                $module['basePath'] = $name;
	            }
	        } else {
	            throw new InvalidArgumentException('modules config must be array.');
	        }
	        
	        if (strpos($module['basePath'], $this->basePath) === false) {
	            $module['basePath'] = rtrim($this->basePath, '/\\') . '/' . trim($module['basePath'], '/\\') . '/';
	        }
	        $module['class'] = '\\Wslim\\Common\\Module';
	        
	        if (is_numeric($name)) {
	            $name = str_replace($this->basePath, '', $module['basePath']);
	        }
	        $name = trim($name, '\\/');
	        $module['name'] = $name;
	        $alias = isset($module['alias']) ? $module['alias'] : null;
	    }
	    
		if (!isset($this->_modules)) {
		    $this->_modules = [];
		}
		
		if ($alias) {
		    $this->_moduleAliases[$alias] = $name;
		}
		
		if (!in_array($name, $this->_modules)) {
		    array_push($this->_modules, $name);
		    $uid = 'module.' . $name;
            $this->set($uid, $module);
		}
		
		return $this;
	}
public function setModule($name, $module=null)
	{
	    if (!$module) {
	        $module = $name;
	    }
	    
	    if ($module instanceof Module) {
	        $name  = $module->getName();
	        $alias = $module->alias;
	    } else {
	        if (is_string($module)) {
	            $module = ['basePath' => $module];
	        } elseif (is_array($module)) {
	            if (!isset($module['basePath'])) {
	                $module['basePath'] = $name;
	            }
	        } else {
	            throw new InvalidArgumentException('modules config must be array.');
	        }
	        
	        if (strpos($module['basePath'], $this->basePath) === false) {
	            $module['basePath'] = rtrim($this->basePath, '/\\') . '/' . trim($module['basePath'], '/\\') . '/';
	        }
	        $module['class'] = '\\Wslim\\Common\\Module';
	        
	        if (is_numeric($name)) {
	            $name = str_replace($this->basePath, '', $module['basePath']);
	        }
	        $name = trim($name, '\\/');
	        $module['name'] = $name;
	        $alias = isset($module['alias']) ? $module['alias'] : null;
	    }
	    
		if (!isset($this->_modules)) {
		    $this->_modules = [];
		}
		
		if ($alias) {
		    $this->_moduleAliases[$alias] = $name;
		}
		
		if (!in_array($name, $this->_modules)) {
		    array_push($this->_modules, $name);
		    $uid = 'module.' . $name;
            $this->set($uid, $module);
		}
		
		return $this;
	}
public function setModule ( $ name , $ module = null ) { if ( ! $ module ) { $ module = $ name ; } if ( $ module instanceof Module ) { $ name = $ module -> getName ( ) ; $ alias = $ module -> alias ; } else { if ( is_string ( $ module ) ) { $ module = [ 'basePath' => $ module ] ; } elseif ( is_array ( $ module ) ) { if ( ! isset ( $ module [ 'basePath' ] ) ) { $ module [ 'basePath' ] = $ name ; } } else { throw new InvalidArgumentException ( 'modules config must be array.' ) ; } if ( strpos ( $ module [ 'basePath' ] , $ this -> basePath ) === false ) { $ module [ 'basePath' ] = rtrim ( $ this -> basePath , '/\\' ) . '/' . trim ( $ module [ 'basePath' ] , '/\\' ) . '/' ; } $ module [ 'class' ] = '\\Wslim\\Common\\Module' ; if ( is_numeric ( $ name ) ) { $ name = str_replace ( $ this -> basePath , '' , $ module [ 'basePath' ] ) ; } $ name = trim ( $ name , '\\/' ) ; $ module [ 'name' ] = $ name ; $ alias = isset ( $ module [ 'alias' ] ) ? $ module [ 'alias' ] : null ; } if ( ! isset ( $ this -> _modules ) ) { $ this -> _modules = [ ] ; } if ( $ alias ) { $ this -> _moduleAliases [ $ alias ] = $ name ; } if ( ! in_array ( $ name , $ this -> _modules ) ) { array_push ( $ this -> _modules , $ name ) ; $ uid = 'module.' . $ name ; $ this -> set ( $ uid , $ module ) ; } return $ this ; }
set sub module

@param  mixed  $name   Module or string or array definition
@param  mixed  $module Module or string or array definition
@return static
set sub module