Laravel 将第三方软件包安装到自定义服务提供商中
我试图将一种“存储库模式”应用于定制服务 我想做的是将库实际绑定到我的定制服务提供商,以创建一个抽象层,并最终在将来将该库切换到另一个库 我正试图将Laravel 将第三方软件包安装到自定义服务提供商中,laravel,Laravel,我试图将一种“存储库模式”应用于定制服务 我想做的是将库实际绑定到我的定制服务提供商,以创建一个抽象层,并最终在将来将该库切换到另一个库 我正试图将'providers'和'alias'引用从config/app.php移动到我的服务提供商,但我得到了一个类“GoogleMaps”找不到的错误 我已将App\Providers\GeoServiceProvider::class添加到config/App.phpProviders数组中,这是我的相关代码: GeoServiceProvider.p
'providers'
和'alias'
引用从config/app.php
移动到我的服务提供商,但我得到了一个类“GoogleMaps”找不到的错误
我已将App\Providers\GeoServiceProvider::class
添加到config/App.php
Providers数组中,这是我的相关代码:
GeoServiceProvider.php
(我的定制服务提供商)
GoogleGeoService.php
(实际的库实现)
谢谢,,
Alex查看是否有帮助谢谢,我已经阅读了这篇文章,但我想做的是将facade定义到GeoServiceProvider
(不在config/app.php中)。通过这种方式,我可以将实际的api库切换到另一个api库。我试图用$this->app->alias(\GoogleMaps\Facade\GoogleMapsFacade::class,'GoogleMaps')
来定义它,但它不起作用:我得到了一个类“GoogleMaps”找不到
错误。你能试一下编写器转储自动加载吗?我试过:同样的错误。如果我实例化该类$googleMaps=new\googleMaps\googleMaps()$response=$googleMaps->load('geocoding')->setParamByKey('latlng',“45.41760620,11.90208370”)->setEndpoint('json')->get()代码>它只是工作。但是为什么我不能使用facade呢?第三方包和您自己的GeoServiceProvider绑定之间存在冲突。请尝试为别名使用其他名称。您还可以发布完整的错误响应。请参阅帮助谢谢,我已经阅读了这篇文章,但我想做的是将facade定义到GeoServiceProvider
(不在config/app.php中)。通过这种方式,我可以将实际的api库切换到另一个api库。我试图用$this->app->alias(\GoogleMaps\Facade\GoogleMapsFacade::class,'GoogleMaps')
来定义它,但它不起作用:我得到了一个类“GoogleMaps”找不到
错误。你能试一下编写器转储自动加载吗?我试过:同样的错误。如果我实例化该类$googleMaps=new\googleMaps\googleMaps()$response=$googleMaps->load('geocoding')->setParamByKey('latlng',“45.41760620,11.90208370”)->setEndpoint('json')->get()代码>它只是工作。但是为什么我不能使用facade呢?第三方包和您自己的GeoServiceProvider绑定之间存在冲突。请尝试为别名使用其他名称。您还可以发布完整的错误响应。
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class GeoServiceProvider extends ServiceProvider
{
/** * Register services.
*
* @return void
*/
public function register()
{
$this->app->bind(\App\Interfaces\GeoInterface::class, \App\Services\GoogleGeoService::class);
$this->app->alias(\GoogleMaps\Facade\GoogleMapsFacade::class, 'GoogleMaps');
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
}
}
<?php
namespace App\Interfaces;
interface GeoInterface
{
public function geoCode();
}
<?php
namespace App\Services;
use App\Interfaces\GeoInterface;
class GoogleGeoService implements GeoInterface
{
public function geoCode()
{
$response = \GoogleMaps::load( 'geocoding' ) <--- HERE IS WHERE I GET THE ERROR
->setParamByKey( 'latlng', "45.41760620,11.90208370")
->setEndpoint( 'json' )
->get();
$response = json_decode($response, true);
return $response;
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Interfaces\GeoInterface;
class TestController extends Controller
{
protected $geoService;
public function __construct(GeoInterface $geoService) {
$this->geoService = $geoService;
}
public function index() {
return $this->geoService->geoCode();
}
}