PHP: установить базовый URL клиента с помощью singleton

Итак, я хочу создать клиентский базовый URL с помощью singleton.

Это мой GuzzleClient.php, который содержит базовый URL

<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

class GuzzleClient {
public static function getClient()
{
static $client = null;
if (null === $client)
{
$client = new Client([
'base_url' => 'http://localhost:8080/task_manager/v1/',
]);
}

return $client;
}private function __construct()
{}
}

И это где я должен поставить базовый URL

require_once 'GuzzleClient.php';

class CardTypeAPIAccessor
{

private $client;

public function __construct($client)
{
$this->client = $client;
}

public function getCardTypes() {
$cardTypes = array();

try
{
//this is where base URL should be
$response = $client->get('admin/card/type',
['headers' => ['Authorization' => $_SESSION['login']['apiKey']]
]);

$statusCode = $response->getStatusCode();
// Check that the request is successful.
if ($statusCode == 200)
{
$error = $response->json();
foreach ($error['types'] as $type)
{
$cardType = new CardType();
$cardType->setId($type['card_type_id']);
$cardType->setCategory($type['category']);

array_push($cardTypes, $cardType);
}
}
}
}}

Я придерживался того, как поместить метод в GuzzleClient в этот код.
Спасибо

2

Решение

inharit GuzzleClient класс в CardTypeAPIAccessorи проверьте, если $client не являетсяinstanceof GuzzleClient затем назначить объект доступа в $this->client

class CardTypeAPIAccessor extends GuzzleClient
{
private $client;

public function __construct($client)
{
if($client instanceof GuzzleClient){
$this->client = $client
}else{
$this->client = parent::getClient();

}}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]