feat: add currency lister

feat: add currency lister

static currency lister
This commit is contained in:
Ondrej Vlach 2024-01-16 20:29:04 +01:00
parent 53eeb4b373
commit e89290473b
Signed by: ovlach
GPG Key ID: 4FF1A23B4914DE70
3 changed files with 39 additions and 0 deletions

View File

@ -4,6 +4,8 @@
# Put parameters here that don't need to change on each machine where the app is deployed # Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters: parameters:
env(SYMFONY_EXAMPLE_APP_CURRENCIES): '["CZK", "EUR", "USD", "GBP"]'
app.currencies: '%env(json:SYMFONY_EXAMPLE_APP_CURRENCIES)%'
services: services:
# default configuration for services in *this* file # default configuration for services in *this* file
@ -21,5 +23,10 @@ services:
- '../src/Entity/' - '../src/Entity/'
- '../src/Kernel.php' - '../src/Kernel.php'
App\Service\StaticCurrencyLister:
arguments:
$available_currencies: '%app.currencies%'
App\Service\CurrencyListerInterface: '@App\Service\StaticCurrencyLister'
# add more service definitions when explicit configuration is needed # add more service definitions when explicit configuration is needed
# please note that last definitions always *replace* previous ones # please note that last definitions always *replace* previous ones

View File

@ -0,0 +1,12 @@
<?php
declare(strict_types=1);
namespace App\Service;
interface CurrencyListerInterface
{
/**
* @return string[]
*/
public function getCurrencies(): iterable;
}

View File

@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Service;
/**
* Represents currency lister loaded from configuration
*/
readonly final class StaticCurrencyLister implements CurrencyListerInterface {
/**
* @param String[] $available_currencies
*/
public function __construct(private array $available_currencies) {
}
public function getCurrencies(): iterable
{
return $this->available_currencies;
}
}