yii\base\Module::getModule PHP Метод

getModule() публичный Метод

This method supports retrieving both child modules and grand child modules.
См. также: hasModule()
public getModule ( string $id, boolean $load = true ) : Module | null
$id string module ID (case-sensitive). To retrieve grand child modules, use ID path relative to this module (e.g. `admin/content`).
$load boolean whether to load the module if it is not yet loaded.
Результат Module | null the module instance, `null` if the module does not exist.
    public function getModule($id, $load = true)
    {
        if (($pos = strpos($id, '/')) !== false) {
            // sub-module
            $module = $this->getModule(substr($id, 0, $pos));
            return $module === null ? null : $module->getModule(substr($id, $pos + 1), $load);
        }
        if (isset($this->_modules[$id])) {
            if ($this->_modules[$id] instanceof Module) {
                return $this->_modules[$id];
            } elseif ($load) {
                Yii::trace("Loading module: {$id}", __METHOD__);
                /* @var $module Module */
                $module = Yii::createObject($this->_modules[$id], [$id, $this]);
                $module->setInstance($module);
                return $this->_modules[$id] = $module;
            }
        }
        return null;
    }

Usage Example

Пример #1
0
 /**
  * 
  * @param \yii\base\Module $module
  * @param array $result
  */
 private static function getRouteRecrusive($module, &$result)
 {
     foreach ($module->getModules() as $id => $child) {
         if (($child = $module->getModule($id)) !== null) {
             self::getRouteRecrusive($child, $result);
         }
     }
     /* @var $controller \yii\base\Controller */
     foreach ($module->controllerMap as $id => $value) {
         $controller = Yii::createObject($value, [$id, $module]);
         self::getActionRoutes($controller, $result);
         $result[] = '/' . $controller->uniqueId . '/*';
     }
     $namespace = trim($module->controllerNamespace, '\\') . '\\';
     self::getControllerRoutes($module, $namespace, '', $result);
     $result[] = ($module->uniqueId === '' ? '' : '/' . $module->uniqueId) . '/*';
 }
All Usage Examples Of yii\base\Module::getModule