所以我正在构建一个Laravel包,并且有一些特殊功能需要通过添加指向Laravel基本路径中的目录的psr-4命名空间来更新composer。
到目前为止,我已经尝试了这个但是没有用。
$loader = include(base_path('vendor/autoload.php'));
$loader->add('Classes\Weather', base_path('modules'));
随后:
$weather = new Classes\Weather\WeatherSite();
答案 0 :(得分:1)
你可以检查这个线程,它提供了一些解决方案:
https://github.com/composer/composer/issues/1906#issuecomment-51632453
答案 1 :(得分:1)
经过几次试验并通过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()
{
}
}