Salve forum,
mi e' stato chiesto di svolgere un piccolo esercizio utilizzando la dependency injection ed essendo un pattern a me sconosciuto sto avendo delle difficolta' nel farlo. Vorrei che qualcuno riesca a mettermi almeno sulla giusta strada.

Questo e' il testo dell'esercizio:
"Creare un semplice report che mostri le transazioni per un customer id specificato come argomento da linea di comando.
Il file data.csv contiene dati di esempio in varie valute [customer,date,value] (il primo carattere di value e' il simbolo della valuta), il report dovra' mostrare i valori in EUR.
Non e' necessario che l'applicazione utilizzi un webservice di cambio valuta reale, un client finto che ritorna valori random o fissi e' sufficiente.
Puoi utilizzare framework o librerie gia' pronte se lo ritieni opportuno. Se utilizzi codice di terze parti ti consigliamo di utilizzare composer.
Il task sara' valutato sulla base del tuo utilizzo della programmazione OO, della dependency injection (ove opportuno) e della leggibilita' e manutenibilita'."

Il codice fornito e' il seguente:
  • report.php

codice:
foreach ($customer->getTransactions() as $transaction) {}
  • customer.php

codice:
class Customer {
    public function getTransactions() {}
}
  • CurrencyWebservice.php

codice:
class CurrencyWebservice {
    public function getExchangeRate($currency) {}
}
  • CurrencyConverter.php

codice:
 class CurrencyConverter {
    public function convert($amount) {}
}
Io l'unica dipendenza che vedo e' fra CurrencyConverter e CurrencyWebservice in quanto CurrencyConverter ha bisogno di una valore per la conversione che e' gestito da CurrencyWebservice (per questo pensavo di usare una soluzione con un array del genere array('£'=>1.2,'$'=>0.95,'€'=>1). Se mi dite che il ragionamento fila inizio a buttare giu' il codice.

Grazie in anticipo