Come impedire di ricontrollare i dati già verificati?

0

Ho una classe con un metodo validId($id) chiamato dal costruttore e da public function load($id) . Il metodo esegue una query sul database per verificare se l'ID esiste e restituisce true / false.

Il costruttore prende facoltativamente un $id (se nessun $ id, quindi l'oggetto sarà vuoto).

Il costruttore controlla l'ID $ con validId($id) , e se passa, chiama load($id) .

Non dovrei prendere validId() su load() perché load() è pubblico e l'input deve essere controllato!

Lo stesso vale per il costruttore.

Come faccio a evitare di chiamare validId() due volte? Stavo pensando di aggiungere un parametro a load($id,$check_id) , ma sarebbe ridicolo. Non puoi dare ai clienti l'opzione di non convalidare i dati!

Potrei aggiungere una proprietà protetta come $id_is_valid che viene impostata su true di validId($id) . Ma come faccio a sapere che il valore che è valido è lo stesso ricevuto dal mio metodo load() ?

Sto usando PHP.

Speriamo che questa non sia una domanda stupida.

    
posta Buttle Butkus 29.12.2013 - 06:37
fonte

1 risposta

2

Se il costruttore chiama load($id) (che chiama validId da solo), perché deve chiamare prima validId ? Lascia che chiami load($id) incondizionatamente, assicurati che load($id) restituisca uno stato per mostrare se l'ID era valido o meno, quindi il costruttore può agire di conseguenza.

Questo suggerimento funzionerà, ma non è ancora il più pulito. È meglio creare un metodo privato aggiuntivo load_unchecked($id) e chiamarlo dal costruttore e da load . Questo ti dà il controllo che desideri.

    
risposta data 29.12.2013 - 09:27
fonte

Leggi altre domande sui tag