标签:php package laravel workbench
我用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, 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, $headers = array(), $parameters = NULL, $username = NULL, $password = NULL);
}
标签:php,package,laravel,workbench 来源: https://codeday.me/bug/20190708/1403487.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。