Php 如何从Laravel控制器更新composer.json

Php 如何从Laravel控制器更新composer.json,php,laravel-5,composer-php,Php,Laravel 5,Composer Php,因此,我正在构建一个Laravel包,其中有一个特殊功能,需要通过添加一个psr-4名称空间来更新composer,该名称空间指向Laravel基本路径中的目录 到目前为止,我已经试过了,但不起作用 $loader = include(base_path('vendor/autoload.php')); $loader->add('Classes\Weather', base_path('modules')); 后来: $weather = new Classes\Weather\

因此,我正在构建一个Laravel包,其中有一个特殊功能,需要通过添加一个psr-4名称空间来更新composer,该名称空间指向Laravel基本路径中的目录

到目前为止,我已经试过了,但不起作用

$loader = include(base_path('vendor/autoload.php')); 

$loader->add('Classes\Weather', base_path('modules')); 
后来:

$weather = new Classes\Weather\WeatherSite();

您可以检查此线程,它提供了一些解决方案:


经过几次尝试和查看作曲家文档,我终于想出了一个可行的方法:

注意:我之所以需要此解决方案,是为了使我能够从Laravel包中自动添加Psr4路径,而无需在composer.json中手动添加包中所需的特定路径

将此添加到包服务提供商的引导方法中,我的是
DigitlimitModuleServiceProvider

use Illuminate\Support\ServiceProvider;

class DigitlimitModuleServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
     public function boot()
     {
        $autoload = require base_path('vendor/autoload.php');
        $autoload->addPsr4('Digitlimit\\Module\\',  base_path('modules'));
        $autoload->register();

        if(!file_exists(base_path('modules'))){
           \File::makeDirectory(base_path('modules'));
           //works as long as there is permission
        }
     }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {

    }
}

你是唯一的吗?我还没有这个问题。仍然在寻找出路。这是我的帖子。让我们继续等待答案。我一直在谷歌上搜索