假设我正在开发一个L5包,并且该包使用(并且需要自己composer.json
)另一个提供一些别名的包。
有没有办法从服务提供商的register()
功能中加载别名?
一个示例是使用laravelcollective/html
并且在其服务提供商上使用register()
函数的包,如下所示:
public function register()
{
// Whatever else...
$this->app->register('Collective\Html\HtmlServiceProvider');
// And then I'm looking for something like the following
// $this->app->alias('HTML', 'Collective\Html\HtmlFacade');
// $this->app->alias('Form', 'Collective\Html\FormFacade');
}
这样,用户不必将别名添加到其app配置文件中,并且它们实际上可以用于我自己的测试,例如testbench。
谢谢!
答案 0 :(得分:0)
好的,所以回答我自己的后代问题,你可以得到一个AliasLoader
的实例并加载你自己的别名。按照我的问题所述的例子,它就像是:
public function register()
{
// Whatever else...
$this->app->register('Collective\Html\HtmlServiceProvider');
// Load HTML and Form aliases
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('HTML', 'Collective\Html\HtmlFacade');
$loader->alias('Form', 'Collective\Html\FormFacade');
}
这将在包装上加载外墙,因此可以使用它们。