Dove devo inserire le costanti relative al dominio?

4

Ad esempio se ho una costante, come la dimensione della password generata, allora dove dovrei mettere quella costante se il generatore di password casuali è implementato nell'infrastruttura? Immagino che questo dovrebbe essere un servizio di dominio, ma suppongo di non poter inserire la costante nell'interfaccia di servizio. O posso?

Ho finito con questo:

namespace Example\domain;

interface iRandomPasswordService {

    const RANDOM_PASSWORD_SIZE = 6;

    public function getPassword();

}

namespace Example\infrastructure;

use Example\domain\iRandomPasswordService;
use Example\domain\Password;
use JUserHelper;

class RandomPasswordService implements iRandomPasswordService {

    public function getPassword(){
        $randomPassword = JUserHelper::genRandomPassword(self::RANDOM_PASSWORD_SIZE);
        return new Password($randomPassword);
    }

}

Anch'io odio PHP e Joomla, non ne parlo. Sto aspettando un'approvazione o un'idea migliore. : -)

    
posta inf3rno 16.02.2017 - 11:59
fonte

2 risposte

2

Penso che ci siano due posizioni accettabili che memorizzano la lunghezza della password generata, il che dipende meglio da quanto controlli il servizio di generazione / autenticazione della password e la tua app effettiva.

  1. La lunghezza della password è sigillata nell'app di generazione stessa perché è davvero una preoccupazione per quel servizio gestire che tutta la password creata è lunga abbastanza per essere protetta.
  2. La lunghezza della password desiderata viene passata al servizio dall'app e l'app viene archiviata in un file costanti / di configurazione con altri valori di autenticazione / sicurezza correlati. Non memorizzerei questo valore sull'interfaccia perché se cambia, devi aggiornare l'interfaccia e ovunque usi l'interfaccia.

Preferirei l'opzione 1 a meno che non potessi modificare il servizio di generazione stesso perché mantiene tutti i problemi di autenticazione dell'utente all'interno del servizio che hai scelto di gestirli.

    
risposta data 16.02.2017 - 14:05
fonte
1

Non credo che le costanti debbano essere inserite in un'interfaccia. Lo scopo di un'interfaccia è definire cosa è necessario definire in ciascuna implementazione. Lo metterei nel servizio o qualunque sia la classe di implementazione.

    
risposta data 16.02.2017 - 14:01
fonte

Leggi altre domande sui tag