Come evitare gli interruttori? [duplicare]

1

Uso Laravel come framework PHP, sebbene la questione non riguardi esattamente laravel, più riguardo alla strutturazione dei metodi del controller.

Ho un percorso per la pagina degli ordini. A seconda del ruolo dell'utente, ho bisogno di includere viste diverse e ho una logica diversa per ogni ruolo. Sembra così:

    public function index()
    {
        switch ($this->user->role->name) {
            case 'admin': {
                // Some code
                break;
            }
            case 'customer': {
                // Some code
                break;
            }
            case 'manager': {
                // Some code
                break;
            }
        }
    }

Ripeto questo modello per tutti i percorsi accessibili per molti ruoli. So che usare ripetutamente if / else , switch o questo genere di cose non è la soluzione migliore. Anche la funzione diventa abbastanza grande (non molto, ma dipende dalla logica). Ovviamente posso suddividerlo in 3 sottofunzioni ( indexAdmin , indexManager , indexCustomer ) ma non sono ancora sicuro se è buono.

Qualcuno potrebbe spiegare come gestirlo, preferibilmente usando Laravel (io uso la versione 5 dev)?

Aggiornamento

Ecco il codice completo: link

    
posta Victor 28.11.2014 - 20:12
fonte

1 risposta

-1

Penso che entrare in 3 funzioni come hai detto sia la migliore alternativa, principalmente per separare la logica di ciascun utente.

Ecco un esempio di come questo può essere fatto:

public function index() {
    $method = "index" . ucfirst($this->user->role->name);
    $this->$method();
}

private function indexAdmin() {
    // do stuff
}

private function indexCustomer() {
    // do stuff
}

private function indexManager() {
    // do stuff
}
    
risposta data 29.11.2014 - 20:00
fonte

Leggi altre domande sui tag