Domanda

Sto cercando di scoprire qual è il modo migliore sarebbe quello di avere un modello di specifica in PHP, dove le specifiche potrebbero (facoltativamente) da trasformato in PHP.

sto esplorando nuove direzioni e sto testando quanto bene avrebbe funzionato. Codice e le idee sono ancora molto chiare nella mia mente.

interfacce Minimal sarebbe come questi:

interface IRepository {
    public function get(ISpecification $specification);
}

interface ISpecification {
    public function isSatisfiedBy($candidate);
}

Se il repository nasconde un database SQL specifica avrebbe bisogno di trasformare a SQL. L'aggiunta di un metodo -> toSQL () sembra ad hoc. Una classe che traduce le specifiche è anche una possibilità, ma sembra che un sacco di spese generali per generare infine lo sql.

Idee apprezzate.

È stato utile?

Soluzione

Citando POEAA (pg.324):

  

Sotto le coperte, Repository mietitrebbie Metadata Mapping (329) con un oggetto Query (316) per generare automaticamente il codice SQL nofollow dai criteri. Se i criteri sanno come aggiungere se stessi a una query, il Oggetto Query (316) sa come incorporare criteri di oggetti, o il Metadata Mapping (306) si controlla l'interazione è un dettaglio di implementazione.

Criteri In questo descrizioni sono naturalmente il vostro Specifica modello . Direi che il tuo approccio suggerito di usare un metodo toSQL sugli oggetti criteri va bene quando l'applicazione è relativamente piccolo. Come hai già detto, andando le altre vie è più difficile, ma fornisce anche una maggiore flessibilità e disaccoppiamento. Alla fine, solo tu puoi decidere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top