是否可以从我的包的服务提供商中加载所需包的别名?

时间:2016-03-19 22:38:25

标签: php laravel-5

假设我正在开发一个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。

谢谢!

1 个答案:

答案 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');
}

这将在包装上加载外墙,因此可以使用它们。