【问题标题】:How to update composer.json from Laravel controller如何从 Laravel 控制器更新 composer.json
【发布时间】:2016-09-02 19:40:09
【问题描述】:

所以我正在构建一个 Laravel 包,并且有一个特殊功能需要通过添加一个指向 Laravel 基本路径中的目录的 psr-4 命名空间来更新作曲家。

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

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

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

稍后:

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

【问题讨论】:

  • 你是唯一的吗?我也有这个问题
  • 还没有。仍在寻找出路。
  • 我明白了。让我们继续等待答案。我一直在谷歌搜索

标签: php laravel-5 composer-php


【解决方案1】:

您可以查看这个帖子,它提供了一些解决方案:

https://github.com/composer/composer/issues/1906#issuecomment-51632453

【讨论】:

    【解决方案2】:

    经过几次试验并浏览了 Composer 文档,我想出了这个可行的方法:

    注意:我需要这个解决方案的原因是让我能够从 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()
        {
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-03
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2014-09-28
      • 1970-01-01
      • 2014-05-26
      相关资源
      最近更新 更多