【问题标题】: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
【解决方案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()
{
}
}