Pergunta

Eu estou construindo um aplicativo em PHP e estou usando o padrão mapeador de dados para o meu acesso DB. Eu estava pensando em usar o padrão Observer ter todos os meus mapeadores observar as entidades que criam, para que eles automaticamente pode salvar as alterações no banco de dados sem me ter de analisá-los de volta manualmente.

Eu só estava me perguntando se isso era uma boa idéia, ou se é má prática etc.?

Estou tipicamente trabalhar com alguns objetos que estão ligados entre si em uma hierarquia, e neste momento ter que analisar cada objeto a ele do mapeador manualmente, o que é bastante tedioso, por isso, apenas tentando chegar a uma solução melhor.

Obrigado, Jack

Foi útil?

Solução

Definitivamente soa como uma boa idéia para mim. O que você está fazendo é semelhante ao Unidade de padrão de trabalho a intenção de manter a par das mudanças que você fez para objetos mapeados e comprometer (geralmente como uma única transação) uma vez que você está feito.

Eu acredito que projetos como saída e Repose proporcionar isso para você em PHP, bem como aliviar um pouco a dor de mapeamento, mas eu não usei pessoalmente-los.

Como um aparte, parece que suas hierarquias de objeto pode beneficiar de ser visto como Agregados se você quiser descer a Domain Driven projeto caminho e se beneficiar do isolamento limpo que ele traz.

-

Edit: ele também parece Componentes eZ tem um PHP destaque bastante completo ORM solução, e Doctrine 2.0 prepara-se desta forma também.

-

Edit 2: I não iria olhada Propel ou crioulo para o problema que você está discutindo. Crioulo não é um ORM, mas mais de uma camada de abstração DB semelhante a DOP - eo projeto é agora oficialmente "Morto". Propel usa o padrão ActiveRecord, não o padrão DataMapper, para que seus objetos de domínio acabar com muito mais persistência responsabilidade e AFAIK não incluem uma academia de unidade de trabalho.

Outras dicas

Se você está olhando para o cheque de ORM para fora Propel e crioula .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top