Php 为第三方API使用Laravel服务容器

Php 为第三方API使用Laravel服务容器,php,laravel,rest,api,laravel-5,Php,Laravel,Rest,Api,Laravel 5,我试图正确使用Laravel的服务容器来实例化与第三方API的连接,并在我的控制器中使用它。下面,我将API连接添加到Laravel的AppServiceProvider的register方法中。在我的控制器构造函数中,我为该连接提供了一个句柄,该句柄可以在需要连接的任何地方在控制器内部自由使用。此示例是否演示了服务容器的最佳使用?我是否应该将对“bind”的引用替换为“singleton” 使用App\Http\Clients\RestClient; 使用Illumb\Support\Serv

我试图正确使用Laravel的服务容器来实例化与第三方API的连接,并在我的控制器中使用它。下面,我将API连接添加到Laravel的AppServiceProvider的register方法中。在我的控制器构造函数中,我为该连接提供了一个句柄,该句柄可以在需要连接的任何地方在控制器内部自由使用。此示例是否演示了服务容器的最佳使用?我是否应该将对“bind”的引用替换为“singleton”

使用App\Http\Clients\RestClient; 使用Illumb\Support\ServiceProvider; 类AppServiceProvider扩展了ServiceProvider { 公共职能登记册 { $this->app->bindRestClient::类,函数$app { $this->api=newrestclient; $this->api->setUrlgetenv'api\u REST\u URL' ->setUsernamegetenv'API_USERNAME' ->setPasswordgetenv'API_PASSWORD' ->连接; 返回$this->api; }; } } 类LoginController扩展控制器 { 公共函数\uuu constructRestClient$api { $this->api=$api; } 公共功能登录后 { $results=$this->api->search'Users'; } }
你的用法没有错。但是,这种用法反对依赖注入。您不需要使用自定义服务提供程序。但是您可以使用Laravel的类注册来注入RestClient

下面是一个来自Laravel文档的示例。您可以在这里设置RestClient,也可以将其注入RestApiService

$this->app->singleton(Connection::class, function ($app) {
    return new Connection(config('riak'));
});

我在使用RestAPIService的ServiceProvider中有类似于上面的内容,但这没有什么区别。$this->app->bind'app\Services\RestApiService',函数$app{returnnewrestapiservice;};如果我不使用ServiceProvider并在singleton中设置RestClient,那么singleton位于何处?为什么不在注册/绑定类时将RestClient注入RestPiService?你的例子当然不会有什么不同。因此RestApiService将获得RestClient$RestClient参数,该参数已经初始化。您不需要为它创建新类。@KarlHill这就是我想说的。您还可以使用遗留的RestApiService。您可以将此服务注入控制器,而不是注入第三方客户端。您当前的使用情况比以前好得多。我想知道是否还有其他的注射方法。@terasakyan谢谢。你试过拉威尔护照吗?@KarlHill是的: