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 usatruecome 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-nameosuccess; - 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;