Abbiamo una classe utente che gestisce tutte le cose relative agli utenti all'interno di un sistema di gestione dei contenuti. Come previsto, la classe contiene una funzione login()
. Questa funzione accetta tre argomenti: $username
, $password
e $remember
(il secondo predefinito a true
).
La mia domanda è: qual è il modo migliore per gestire gli errori di accesso in modo che possano essere visualizzati all'utente? Stiamo utilizzando un modello MVC personalizzato qui, quindi abbiamo controller e visualizzazioni che devono rimanere astratti dalla classe stessa. Ho identificato le seguenti soluzioni possibili:
- Restituisce interi con segno dalla funzione
login()
che può essere interpretata all'interno del controller. - Aggiungi una variabile all'oggetto
User
contenente il messaggio di errore in testo semplice - Emetti l'errore direttamente dall'interno della chiamata di funzione
Il punto 3 è discutibile, dato che non lo faremo (l'output di accoppiamento con una classe == cattivo).
Il punto 2 sembra essere il più logico, ma renderà difficile la multi-lingua (una funzionalità che potrebbe essere aggiunta in seguito). Ad esempio, potremmo fare qualcosa di simile:
class User
{
public $loginError;
public function login($username, $password, $remember = true)
{
if($password !== $ourStoredPassword)
{
$this->loginError = 'Password does not match';
return false;
}
}
}
Penso che l'opzione migliore sia la # 1. Ad esempio, potremmo farlo all'interno della classe:
class User
{
public function login($username, $password, $remember = true)
{
if($password !== $ourStoredPassword)
{
return -1;
}
}
}
Quindi, all'interno del nostro controller, basta guardare il valore restituito da login()
e gestirlo in esso. Quali sono i pensieri delle persone? C'è un modo migliore per affrontare questo?