基本上你只需要在你的包composer.json中需要这个包并在你的服务提供者中实例化它,将该包注入到你的类中:
class MyPackageServiceProvider extends ServiceProvider {
public function register()
{
$this->app['mypackage'] = $this->app->share(function($app)
{
return new MyPackage(
new ThirdPartyPackage()
);
});
}
}
Run Code Online (Sandbox Code Playgroud)
并在你的课堂上使用它:
class MyPackage {
public function __construct(ThirPartyPackage $package)
{
$this->package = $package
}
public function doWhatever()
{
$this->package->do();
}
}
Run Code Online (Sandbox Code Playgroud)
如果包只有静态函数,则无能为力,您可能必须直接在类中使用它:
Unirest::get("http://httpbin.org/get", null, null, "username", "password");
Run Code Online (Sandbox Code Playgroud)
您可以做的就是创建一个类来动态地使用该包:
class MyRest implements MyClassInterface {
public function get($url, $headers = array(), $parameters = NULL, $username = NULL, $password = NULL)
{
return Unirest::get($url, $parameters, $headers, $username, $password);
}
}
Run Code Online (Sandbox Code Playgroud)
并在包中使用您自己的类。通过不直接公开该包,您可以动态地使用它,并且以后仍然可以更改实现。您还应该为您的公共方法创建一个接口:
interface MyClassInterface {
public function get($url, $headers = array(), $parameters = NULL, $username = NULL, $password = NULL);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |