valori di ritorno php

2

Ho un'app codeigniter e nel mio modello, restituisco sempre true o false per tutte le funzioni, e se ho dei dati che devono essere passati, imposto anche una proprietà che contiene i miei dati.

L'unico problema è che, nel mio controller, se devo chiamare 3 o 4 metodi nel mio modello, il codice diventa davvero ripetitivo.

If ( $this->my_model->functionA() ) 
{
    $localvar = $this->my_model->data();
}
else
{
    show_error("Error A");
}
If ( $this->my_model->functionB() ) 
{
    $localvar = $this->my_model->data();
}
else
{
    show_error("Error B");
}
If ( $this->my_model->functionC() ) 
{
    $localvar = $this->my_model->data();
}
else
{
    show_error("Error C");
}

Mi chiedo se cambio la logica in modo che le funzioni non restituiscano true, ma restituiscano invece i dati ... semplifica molto le cose? Penso che avrei ancora bisogno di codice come questo:

If (! $this->my_model->functionA() ) 
{
    show_error("Error A");        
}
else
{
    $localvar = $this->my_model->data();
}

O c'è un modo per combinare la mia dichiarazione di assegnazione $ localvar con l'istruzione if?

C'è un modo migliore per farlo?

    
posta dot 09.01.2013 - 20:32
fonte

1 risposta

1

Poiché controlli gli errori di sistema, utilizzerei le eccezioni invece dei soli valori restituiti. E ricorda che il tuo modello conserva lo stato, quindi i suoi dati non devono essere restituiti per ogni funzione. Questo è molto più leggibile:

try {
    $this->my_model->functionA();
    $this->my_model->functionB();
    $this->my_model->functionC();
    $localvar = $this->my_model->data();
}
catch (Exception $e) {
    show_error($e->getMessage());
}
    
risposta data 09.01.2013 - 21:36
fonte

Leggi altre domande sui tag