Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 将第三方软件包安装到自定义服务提供商中_Laravel - Fatal编程技术网

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();
    }
}