Ciao m4V1, grazie per avermi risposto. Sono riuscito a far funzionare il tutto solo che non so se ho rispettato il pattern e alla fine ho utilizzato una doppia dipendenza; oltre a quella fra CurrencyConverter e CurrencyWebservice ho creato anche quella fra Customer e CurrencyConverter. Di seguito il codice:
codice:require_once("./models/Customer.php"); $id = $argv[1]; if(!isset($id) || !is_numeric($id)) { echo "Argomento non valido. Esecuzione interrotta\n"; echo "Si prega di inserire un intero\n"; exit; } $customer = new Customer($id, new CurrencyConverter( new CurrencyWebservice() )); foreach ($customer->getTransactions() as $transaction) { echo $transaction."\n"; }
codice:require_once("./models/CurrencyConverter.php"); class Customer { private $id; private $currencyConverter; public function __construct($id, CurrencyConverter $currencyConverter) { $this->id = $id; $this->currencyConverter = $currencyConverter; } public function getTransactions() { $i = 1; $result = array(); if (($handle = fopen("data.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle)) !== FALSE) { if($i>1) { $line = explode(";",$data[0]); if($line[0] == $this->id) { $new_value = $this->currencyConverter->convert($line[2]); $row = "Transazione del $line[1]: $line[2] ==> €$new_value"; array_push($result, $row); } } $i++; } fclose($handle); } return $result; } }
codice:require_once("./models/CurrencyWebservice.php"); class CurrencyConverter { private $webservice; public function __construct(CurrencyWebservice $currencyWebservice) { $this->webservice = $currencyWebservice; } public function convert($amount) { $amount = str_replace('"', "", $amount); $currency = substr($amount,0,1); $value = substr($amount,1); $rate = $this->webservice->getExchangeRate($currency); return $rate*$value; } }
codice:class CurrencyWebservice{ private $currencies = array("s"=>1.20,"$"=>0.95,"e"=>1); public function getExchangeRate($currency) { if (array_key_exists($currency, $this->currencies)) { return $this->currencies[$currency]; } else { return 0; } } }
Spero sia corretto![]()

Rispondi quotando