Pregunta

Estoy tratando de averiguar cuál es la mejor manera sería tener un patrón de especificación en PHP, donde las especificaciones puede (opcionalmente) por transformada de PHP.

Estoy explorando nuevas direcciones y poner a prueba, lo bien que iba a funcionar. Código y las ideas son todavía muy claro en mi mente.

interfaces de mínimos serían como los siguientes:

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

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

Si los cueros repositorio una base de datos SQL la especificación necesitaría para transformar a SQL. La adición de un método -> toSQL () parece ad hoc. Una clase que traduce las especificaciones es también una opción, pero parece que un montón de gastos generales a fin de generar el SQL.

Ideas apreciado.

¿Fue útil?

Solución

Citando de PoEAA (pg.324):

  

Debajo de las sábanas, repositorio combina metadatos de mapeo (329) con un objeto de consulta (316) para generar automáticamente el código SQL de los criterios. Si los criterios saben cómo sumarse a una consulta, el Objeto de consulta (316) sabe cómo incorporar criterios de objetos, o el metadatos de mapeo (306) en sí controla la interacción es un detalle de implementación.

criterios en este descripciones son, por supuesto, su Especificación patrón . Yo diría que el enfoque sugerido utilizar un método toSQL en los objetos de criterios está bien cuando la aplicación es relativamente pequeña. Como ya se ha dicho, pasando las otras rutas es más difícil, sino que también proporciona una mayor flexibilidad y desacoplamiento. Al final, sólo usted puede decidir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top