notadd\vendor\notadd\framework\src\Module\ModuleManager.php
function getModules
/** * Modules of list. * * @return \Illuminate\Support\Collection */ public function getModules() { if ($this->modules->isEmpty()) { if ($this->files->isDirectory($this->getModulePath())) { collect($this->files->directories($this->getModulePath()))->each(function ($directory) { if ($this->files->exists($file = $directory . DIRECTORY_SEPARATOR . 'composer.json')) { $package = new Collection(json_decode($this->files->get($file), true)); $identification = Arr::get($package, 'name'); $type = Arr::get($package, 'type'); if ($type == 'notadd-module' && $identification) { $provider = ''; if ($entries = data_get($package, 'autoload.psr-4')) { foreach ($entries as $namespace => $entry) { $provider = $namespace . 'ModuleServiceProvider'; } } if ($this->files->exists($autoload = $directory . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php')) { $this->files->requireOnce($autoload); } $authors = Arr::get($package, 'authors'); $description = Arr::get($package, 'description'); if (class_exists($provider)) { $module = new Module($identification); $module->setAuthor($authors); $module->setDescription($description); $module->setDirectory($directory); $module->setEnabled($this->container->isInstalled() ? $this->container->make('setting')->get('module.' . $identification . '.enabled', false) : false); $module->setInstalled($this->container->isInstalled() ? $this->container->make('setting')->get('module.' . $identification . '.installed', false) : false); $module->setEntry($provider); if (method_exists($provider, 'alias')) { $module->setAlias(call_user_func([$provider, 'alias'])); } else { $module->setAlias([$identification]); } method_exists($provider, 'description') && $module->setDescription(call_user_func([$provider, 'description'])); method_exists($provider, 'name') && $module->setName(call_user_func([$provider, 'name'])); method_exists($provider, 'script') && $module->setScript(call_user_func([$provider, 'script'])); method_exists($provider, 'stylesheet') && $module->setStylesheet(call_user_func([$provider, 'stylesheet'])); method_exists($provider, 'version') && $module->setVersion(call_user_func([$provider, 'version'])); $this->modules->put($identification, $module); } else { $this->unloaded->put($identification, [ 'authors' => $authors, 'description' => $description, 'directory' => $directory, 'identification' => $identification, 'provider' => $provider, ]); } } } }); } } return $this->modules; }
这个function 获取到所有的module
我想一定是系统初始化的时候初始化了每一个module 所以才能注册到module的route