PHP: dove chiamare la classe helper in MVC?

-1

Ho una classe helper in Laravel 5.1 con metodi statici per calcolare numeri settimanali, date in settimane, ecc. (Perché statico? Ho bisogno di un massimo di 1 istanza di questa classe helper)

Ho bisogno di questa logica nelle mie opinioni. Sto usando il pattern MVC. La mia domanda è abbastanza semplice:

  • La mia vista può chiamare direttamente i metodi di supporto?
  • Oppure: il mio controllore è responsabile di chiamare l'helper e passare i risultati alla vista?
posta schellingerht 02.12.2015 - 17:24
fonte

1 risposta

2

Avere metodi statici perché hai bisogno di una sola istanza è una scusa terribile. Stai introducendo lo stato globale, che è cattivo e incasina il test dell'unità.

Se hai davvero bisogno di una sola istanza dell'helper, crea un contenitore con un metodo come createAndReturnHelper che agirà come un singleton debole, pigro caricando la classe se non è preimpostato e / o restituendo in altro modo l'istanza già creata . Se hai bisogno dell'aiuto nel tuo controller, assicurati di iniettarlo usando il contenitore per ottenere l'helper da esso.

Questo risolve i metodi statici.

Se vuoi che la vista chiami i metodi di helper direttamente o meno, dipende principalmente da te, anche se mi ha dimostrato che l'approccio migliore è fare tutta la logica all'interno del controller, filtrare i dati, trovare le cose giuste e includi nella vista solo PHP molto semplici, come il ciclo foreach e le variabili, ovviamente. Variabili, che contengono i dati corretti.

Il punto principale nel far sì che la vista non contenga alcun codice php complicato è che i progettisti di frontend di solito non hanno una profonda conoscenza del / dei linguaggio / i di programmazione, e in realtà non lo sono, si concentrano sul frontend, quindi tu può dire loro se si itera sulla variabile $x , conterrà tutti i dati necessari. Il team di back-end si assicurerà che i dati siano corretti, quindi limitati a ridisegnarli per l'utente finale in un modo piacevole.

    
risposta data 20.12.2015 - 23:09
fonte

Leggi altre domande sui tag