Laravel中可以有子模块吗?

时间:2019-03-09 14:26:10

标签: laravel laravel-5

有几种Web服务支持多个用Laravel编写的android应用程序。每个Web服务都包含多个模块。董事会决定将所有Web服务作为模块移至一个Laravel安装中。因此,webServer1是一个独立的Web服务,必须成为集成到一个Laravel安装中的Web服务集合的模块。

由于某些Web服务足够大,可以容纳模块,并且它们是由nwidart包实现的,因此我必须像在此新集成中那样实现它。因此,实现它的唯一方法是拥有子模块。

我想知道nwidart支持这样的事情吗?以及我该怎么做?

除此之外,对这样的事情总的来说是个好主意吗?也许我可以劝说他的董事会:)

谢谢。

2 个答案:

答案 0 :(得分:1)

您不需要任何第三方软件包就可以使Laravel应用程序模块化,而我认为这样做会引入不必要的依赖关系。 Composer允许您通过PSR4自动加载功能在特定名称空间下自动加载所需的任何文件夹。

有时,将一些代码放入不同的软件包中,并在需要时使用Composer将它们拉入也可能是有意义的。可以将任何VCS存储库用作软件包的源,因此,如有必要,您的模块可以位于私有存储库中。

通常,使代码更具模块化是一个好主意,因为它允许代码重用。例如,如果您构建了一些对其他项目有用的功能,则可以将其单独放置在一个程序包中,并使用Composer进行使用。

答案 1 :(得分:1)

例如,您可以使用作曲家来做

"psr-4": {
    "App\\": "app/",
    "SubModule\\": "SubModule/Path"
}

然后创建服务提供商 在您的模块内部,例如

<?php

namespace Your\Directory\Here;

use Illuminate\Support\ServiceProvider;

class CustomServiceProvider extends ServiceProvider
{
    protected $defer = true;

    /**
     * Bootstrap the application events.
     *
     * @return void
     */

    public function boot()
    {
        $this->loadViewsFrom(__DIR__ . '/resources/views', 'YOuCanNameHereAnyThing');
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->mergeConfigFrom(__DIR__ . '/config/config.php', 'config');
    }
}