Files
HRM-System/vendor/coingate/coingate-php/lib/Services/AbstractService.php
2026-04-13 08:19:53 +08:00

69 lines
1.6 KiB
PHP

<?php
namespace CoinGate\Services;
use CoinGate\ClientInterface;
use CoinGate\Exception\InvalidArgumentException;
/**
* Abstract base class for all services.
*/
abstract class AbstractService
{
/**
* @var ClientInterface
*/
protected $client;
/**
* Initializes a new instance of the AbstractService class.
*
* @param ClientInterface $client
*/
public function __construct(ClientInterface $client)
{
$this->client = $client;
}
/**
* Gets the client used by this service to send requests.
*
* @return ClientInterface
*/
protected function getClient(): ClientInterface
{
return $this->client;
}
/**
* Send a request to CoinGate API.
*
* @param string $method the HTTP method
* @param string $path the path of the request
* @param array<string, mixed> $params the parameters of the request
* @return mixed
*/
protected function request(string $method, string $path, array $params = [])
{
return $this->getClient()->request($method, $path, $params);
}
/**
* Combine base path with parameters
*
* @param string $path
* @param mixed $ids
* @return string
*/
protected function buildPath(string $path, ...$ids): string
{
foreach ($ids as $id) {
if ($id === null || trim($id) === '') {
throw new InvalidArgumentException('The resource ID cannot be null or whitespace.');
}
}
return vsprintf($path, array_map('urlencode', $ids));
}
}