Laravel Создать пакет с поставщиком услуг и фасадом - не работает
Я пытаюсь создать пакет, который использует Guzzle, он изначально был просто ServiceProvider, но после некоторых исследований он выглядел так, как будто бы лучше всего было создать небольшой специальный пакет.
Однако из-за отсутствия у меня опыта работы с Laravel у меня возникают проблемы с этим. На данный момент я получаю сообщение об ошибке:
Класс zoho-api не существует
Ниже приведен код пакета, я надеюсь, что кто-нибудь увидит, где я ошибся / что-то пропустил, и поможет направить меня в правильном направлении. До сих пор я наслаждался опытом обучения, будьте добры, переступите черту.
Пакет находится здесь: api/packages/energynet/zoho
В папке src:
ZohoServiceProvider.php
<?php
namespace EnergyNet\Zoho;
use Illuminate\Support\ServiceProvider;
class ZohoServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = true;
/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
if ($this->app->runningInConsole()) {
$this->publishes([$this->configPath() => config_path('zoho.php')]);
}
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->mergeConfigFrom($this->configPath(), 'cors');
$this->app->bind('zoho-api', function ($app){
$client = new Client([
'base_uri' => config('zoho.endPoint') . 'crm/private/' . config('zoho.defaultResponse')
]);
return new ZohoApi($client);
});
}
protected function configPath()
{
return __DIR__ . '/../config/zoho.php';
}
}
ZohoApi.php
<?php
namespace EnergyNet\Zoho;
use GuzzleHttp\Client;
class ZohoApi
{
protected $client;
protected $authScope;
public function __construct(Client $client)
{
$this->client = $client;
$authScope = '?authtoken=' . config('zoho.authtoken') . '=' . config('zoho.scope');
}
public function ZohoLeads(){
$response = $client->request('GET', 'Leads/getRecords' . $authScope);
dd($response);
}
}
ZohoFacade.php
<?php
namespace EnergyNet\Zoho;
use Illuminate\Support\Facades\Facade;
class ZohoFacade extends Facade
{
protected static function getFacadeAccessor()
{
return 'zoho-api';
}
}
В config/app.php
'providers' => [
...,
EnergyNet\Zoho\ZohoServiceProvider::class,
]
'aliases' => [
'Zoho' => EnergyNet\Zoho\ZohoFacade::class
]
В composer.json
"autoload": {
"psr-4": {
"App\\": "app/",
"EnergyNet\\Zoho\\": "packages/energynet/zoho/src"
}
Затем в LeadController.php
namespace App\Api\V1\Controllers;
...
use Zoho;
class LeadController extends Controller
{
...
public function qualify(Request $request)
{
var_dump(Zoho::ZohoLeads());
Надеюсь, это достаточно ясно, любые вопросы, пожалуйста, дайте мне знать. Действительно надеясь, что кто-то может помочь. Спасибо!