在我的 laravel 包中使用其他包[关闭]
Posted
技术标签:
【中文标题】在我的 laravel 包中使用其他包[关闭]【英文标题】:Using other packages inside my laravel package [closed] 【发布时间】:2014-11-15 17:08:21 【问题描述】:我使用 artisan workbench 命令创建了一个包。 一切正常,但我想在我的包中使用另一个作曲家包。 最好/最干净的方法是什么?
【问题讨论】:
你能补充一些细节吗?你试过了吗? 不...这就是我问的原因。 那么问题是基于意见的,太宽泛了,希望能被关闭 下面的这位先生明白我在说什么。不确定您还需要哪些其他信息 这不是重点吗?可能有多种方法可以解决这个问题,但我不知道,所以我在这里问这个,人们比我更了解。是的,这个问题很简短,但我不明白这可能需要什么其他信息。 【参考方案1】:基本上你只需要在你的包 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);
【讨论】:
如果我尝试使用的包有静态函数怎么办?如果有帮助,我会尝试包含 this package 已编辑以提供有关静力学的信息。 我实际上只是通过将use Unirest;
添加到我的文件中来使其工作;以上是关于在我的 laravel 包中使用其他包[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
我需要使用其他条件在我的 laravel 页面中打印当前没有产品 [关闭]