php – 在我的laravel包中使用其他包

前端之家收集整理的这篇文章主要介绍了php – 在我的laravel包中使用其他包前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我用artisan workbench命令创建了一个包.
一切正常,但我想在我的包中使用另一个作曲家包.
什么是最好/最干净的方法

@R_403_323@

基本上你只需要在你的包composer.json中要求包,并在你的服务提供者中实例化它,将该包注入你的类:

class MyPackageServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app['mypackage'] = $this->app->share(function($app)
        {
            return new MyPackage(
                new ThirdPartyPackage()
            );
        });
    }

}

并在课堂上使用它:

class MyPackage {

    public function __construct(ThirPartyPackage $package) 
    {
        $this->package = $package
    }

    public function doWhatever() 
    {
        $this->package->do();
    }    
}

如果包只有静态函数,那么就没有太多可以做的了,你可能不得不直接在你的类中使用它:

Unirest::get("http://httpbin.org/get",null,"username","password");

你可以做的就是创建一个类来恐怖地使用该包:

class MyRest implements MyClassInterface {

    public function get($url,$headers = array(),$parameters = NULL,$username = NULL,$password = NULL)
    {
        return Unirest::get($url,$parameters,$headers,$username,$password);
    }

}

并在您的包中使用您自己的类.通过不直接暴露该包,您可以使用它,但仍然可以在以后更改实现.您还应该为公共方法创建一个接口:

interface MyClassInterface {

   public function get($url,$password = NULL);

}

猜你在找的Laravel相关文章