Immagina di avere un metodo come User::validate($data)
, e principalmente lo sviluppatore si aspetta solo che restituisca un valore booleano ( true
significa "ok, convalidato con successo"). Ma, in alcuni casi specifici, ha bisogno di controllare perché la convalida non è riuscita. Qual è il modo migliore per controllarlo?
Ho pensato nei seguenti modi:
- Utilizza un argomento come
User::validate($data, $throwsException = false)
che quandotrue
, genera un'eccezione se fallisce - invece di restituiscefalse
; - Genera sempre un'eccezione. Quindi lo sviluppatore deve preoccuparsi di rilevare le eccezioni di questo metodo - personalmente non mi piace;
- Invece di restituire un valore booleano, restituisce una stringa o const (come
FAIL_INVALID_NAME
), ma usatrue
come successo - o un altro const, comeSUCCESS
; - Crea un metodo aggiuntivo come
User::validateWithException($data)
che, se fallisce, genera un'eccezione invece di restituirefalse
; - Crea un metodo aggiuntivo come
User::validateReason($data)
che restituisce una stringa con il risultato della convalida, ad esempiofail:invalid-name
osuccess
; - Crea un metodo aggiuntivo come
User::getLastError()
che restituirà una stringa o const con l'ultimo errore occorso sulla classeUser
, come dopo il metodo di validazione;