Problema
Sto cercando di ottimizzare l'architettura della mia applicazione web sviluppata in PHP usando il framework Symfony.
Ho un "pool" di oggetti che contiene "nuotatori". Devo visualizzare il numero di nuotatori nella mia piscina, ma solo quelli con un costume da bagno rosa.
Per fare ciò, vedo molti possibili approcci:
Approcci
-
Crea un metodo getter personalizzato nella mia classe Pool e filtra i nuotatori secondo il colore del costume da bagno:
public function getSwimmersInPinkSuit() { for each($this->getSwimmers() as $swimmer) { if($swimmer->getBathSuitColor() == "pink") { $pinkSwimmers[] += $swimmer; } return $pinkSwimmers; }
{{ pool.getSwimmersInPinkSuit | length }}
-
Crea una query SQL personalizzata nel mio controller, definisci il numero lì prima di inviarlo al mio modello.
-
Aggiungi una proprietà "$ pinkSwimmers" alla mia classe Pool e incrementalo / decrementandolo con un eventListener ogni volta che continuo nel database l'evento "un PinkSwimmer si unisce / esce dal pool". Quindi posso accedere al valore dove voglio:
{{ pool.pinkSuits }}
-
Utilizza una richiesta di ramificazione più densa per filtrare i nuotatori rosa direttamente nel mio modello
{{ pool.swimmers.suitColor("pink") | lenght }} // If that's even possible o0
Domanda
Nelle quattro proposizioni di cui sopra, vedo pro e contro a ciascuno di essi, quindi:
- Qual è la migliore pratica in questa situazione? Sto supervisionando una logica migliore in aggiunta a quelle sopra menzionate? Cerco di trovare un'implementazione che sia leggera in termini di prestazioni (memoria, larghezza di banda), ma anche facile da riconfigurare (passare dal seme rosa al seme verde o dal colore del seme allo stile di nuoto).