php – 在我的laravel包中使用其他包
发布时间:2020-12-14 19:38:47 所属栏目:大数据 来源:网络整理
导读:我用artisan workbench命令创建了一个包. 一切正常,但我想在我的包中使用另一个作曲家包. 什么是最好/最干净的方法? 解决方法 基本上你只需要在你的包composer.json中要求包,并在你的服务提供者中实例化它,将该包注入你的类: class MyPackageServiceProvid
我用artisan workbench命令创建了一个包.
一切正常,但我想在我的包中使用另一个作曲家包. 什么是最好/最干净的方法? 解决方法
基本上你只需要在你的包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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |