Uso del pattern Builder per standardizzare i dati di restituzione

1

Avrebbe senso usare un modello di builder per restituire i dati da un'API? Attualmente sto solo creando la struttura di array e restituendola. Più in dettaglio, ho 3 posizioni di uscita per la mia classe che dovrebbero essere prese in considerazione (una di queste è vuota).

Fondamentalmente è solo un array multidimensionale in PHP come sotto. Non sono sicuro di dover creare un array globale, una struct like class o builder. Mi piacerebbe qualche input su questo per il mio lavoro futuro.

$arr['pagination']['total']
$arr['pagination']['page']
$arr['inventory_data']
$arr['errors']

UPDATE: Lo sto provando in questo modo:

public function getMeSomething($input)
{
    // -- return 'empty' objects if problems etc. --
    if (!$input) {
        return (array) (new myBuilderStruct())
            ->error('the input is missing')
            ->build();
    }
    // <method code here>

    // -- Return results --
    return (array) (new myBuilderStruct())
        ->total($totalRecords)
        ->current_page($page)
        ->limit($limit)
        ->error((!empty($error)) ? $error : "")
        ->build();
}

Solo per dare qualche dettaglio in più lo sto usando solo per restituire una struttura dati da un metodo, ma voglio che tutti i miei metodi che restituiscono questi dati siano gli stessi.

    
posta Mike Q 25.06.2018 - 17:39
fonte

1 risposta

2

Professionisti del tuo approccio

  • funziona

  • è leggibile

Contro:

  • probabilmente è sovradimensionato.

L'ultimo punto è qualcosa che non possiamo davvero dirti - devi decidere da solo se implementare questa interfaccia fluente vale davvero la pena (specialmente se al momento hai solo 3 posti in cui potresti usarlo nella tua applicazione). Se avessi 30 o 300, direi di si, ha senso.

Ma per 3? Ho dei dubbi Una funzione semplice e riutilizzabile con parametri predefiniti potrebbe essere sufficiente allo scopo di creare un valore di ritorno uniforme in tutti quei 3 punti e non necessariamente meno leggibile. Ma forse la situazione è più complessa di quella mostrata nella domanda, e io non vediamo l'intera immagine, solo tu puoi dirlo.

Inoltre, un array come

$arr['pagination']['total']
$arr['pagination']['page']
$arr['inventory_data']
$arr['errors']

sembra un odore di codice per me - usare una classe con membri errors , inventory_data e pagination sarebbe probabilmente più espressivo e meno soggetto a errori.

    
risposta data 25.06.2018 - 22:03
fonte

Leggi altre domande sui tag