Ho un caso d'uso in cui eseguo calcoli di dati interni usando il sistema inglese, a causa di vari coefficienti grafici precalcolati e altri dati che già utilizzano il sistema inglese. Ma per l'output ho bisogno di convertire alcuni dei miei dati nel sistema metrico e lasciare alcuni dati nel sistema inglese da utilizzare a scopo di debug per seguire il calcolo. (Le informazioni di debug saranno lì per rimanere a lungo termine e non solo utilizzate durante lo sviluppo).
La mia domanda è questa: dove all'interno del MVC faccio il valore conversioni e perché?
Le mie attuali scelte per fare questa conversione sono nel Controller o nella Vista.
Se faccio la conversione all'interno del controller, dovrò essenzialmente mantenere due serie di variabili (una per i calcoli, una per passare alla vista.
Se eseguo la conversione in Visualizza, il mio controller sarà più snello grazie al solo sistema inglese, ma la vista acquisirà vari coefficienti di conversione e codice di conversione e diventerà quindi più pesante.
C'è forse una terza opzione: la conversione deve essenzialmente diventare un altro livello tra Controller e View? In tal caso, dove o come lo collego?
Ulteriori informazioni sulla mia situazione specifica
Ho un'applicazione web PHP scritta in Zend Expressive. I controller sono chiamati Handlers
.
class Handler // aka Controller
{
private $renderer; // renders view template
function handle($request)
{
$system = $request->getUnitSystem(); //"English", "Metric"
$page = $request->getPage(); //page number
$data = $this->repository->getEnglishData(); //PHP array of English-valued data sets
/* Conversions in Handler */
$data[$page]['height'] = $this->valueConverter->feet_to_meters($data[$page]['height']);
$data[$page]['height_unit'] = $system->isMetric() ? 'meters' : 'feet';
$params = array(
'paginator' => $this->paginator->getPaginator($data, $page),
);
/* Send to View */
return new HtmlResponse($this->renderer->render('show_data.phtml', $params));
}
}
Quindi sopra ho i seguenti giocatori:
-
$system
, che è il valore del sistema di unità (inglese o metrico) -
$valueConverter
, che è una libreria di metodi di conversione del valore -
$data
, un array PHP con un insieme di dati con valori in inglese
Uso la conversione nel controller per aggiornare i valori per utilizzare il sistema unità corretto e li invio nella vista. Visualizza li visualizza così com'è.
Complicazione aggiuntiva quando devono essere visualizzati diversi sistemi
Ho anche un caso d'uso in cui ho bisogno di mostrare le informazioni di debug sullo schermo in unità inglesi (mostra i calcoli interni a scopo di debug) e mostrare le informazioni "reali" nelle unità metriche convertite. Potrebbe quindi essere necessario visualizzare contemporaneamente diversi sistemi di unità. Come strutturare il mio codice per gestire questo caso d'uso?