mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 01:04:03 +00:00
Replace duplicated switch/case blocks across 4 methods with a clean abstract driver pattern: - ExchangeRateDriver (abstract): defines getExchangeRate(), getSupportedCurrencies(), validateConnection() - CurrencyFreakDriver, CurrencyLayerDriver, OpenExchangeRateDriver, CurrencyConverterDriver: concrete implementations - ExchangeRateDriverFactory: resolves driver name to class, with register() method for module extensibility Delete ExchangeRateProvidersTrait — all logic now lives in driver classes and ExchangeRateProviderService. Adding a new exchange rate provider only requires implementing ExchangeRateDriver and calling ExchangeRateDriverFactory::register() in a module service provider.
12 lines
261 B
PHP
12 lines
261 B
PHP
<?php
|
|
|
|
namespace App\Services\ExchangeRate;
|
|
|
|
class ExchangeRateException extends \RuntimeException
|
|
{
|
|
public function __construct(string $message, public readonly string $errorKey = 'exchange_rate_error')
|
|
{
|
|
parent::__construct($message);
|
|
}
|
|
}
|