2010-11-10 6 views
2

J'ai adopté à contrecœur une approche de mappeur de données pour mon projet actuel, mais j'ai été laissé un peu confus.La logique métier et les mappeurs de données dans Zend Framework

Business Model

Un travailleur a un nom, un ensemble d'heures de travail et un coût.

Modèle de données

Un travailleur est composé d'un type de travail et un modèle de travail (trois tables différentes). Le coût du travailleur est calculé en fonction d'une combinaison du type de travail et du type de travail.

Mon problème ...

Il me semble avoir deux modèles différents, qui représente la logique métier et qui représente la structure de données. J'avais compris que mon modèle devait représenter la logique métier, mais que se passe-t-il lorsque je souhaite insérer un nouveau worker? Ceci est fait en utilisant un formulaire avec deux listes déroulantes, le modèle de travail & le coût, dont les identifiants ne sont pas nécessaires par le modèle d'affaires.

Confus? Je suis.

+0

Si vous créez votre modèle objet, le peupler avec les données, puis passer au mappeur de données afin qu'il choisisse où insérer en utilisant votre modèle de données ne fonctionne pas? –

Répondre

1

Il n'existe aucun support réel pour les modèles de données avec le framework zend. Mais weierophinney fait un très bon travail pour montrer comment ils pourraient être mis en œuvre. Une autre très bonne description est this one.
Habituellement, un modèle représente les données et inclut la logique. Le modèle de données est un moyen autonome d'écrire/d'obtenir des données. Pour le modèle et l'application, peu importe d'où viennent les données. Ainsi, le datastorage peut être échangé sans avoir à toucher quoi que ce soit d'autre.

+0

Que voulez-vous dire par "Pas de vrai soutien"? Pouvez-vous clarifier? –

+0

@kayne: Il voit actuellement les ensembles de données d'une base de données comme modèle. Ainsi, le modèle est lié à un stockage spécifique et ceci est complètement contre l'idée de modèles.Généralement, un modèle est seulement un objet qui représente la logique des données et des affaires - totalement indépendant du moteur de stockage. pourquoi est-ce une mauvaise idee? Weir O'Phinney fait un excellent travail en expliquant cela (lien 1). – Fge

+0

Mais il y a une implémentation réelle: Vous pouvez avoir un 'Model_Worker', un' Model_WorkerDataMapper' et enfin un 'Model_DbTable_Worker' –

0

La modélisation de données par défaut dans Zend Framework (Zend_Db_Table) n'est probablement pas le meilleur choix pour la modélisation de données orientée objet. Essayez d'utiliser ORM comme Doctrine (http://www.doctrine-project.org/), il vous permet de créer un modèle d'objet de domaine et de le stocker presque de manière transparente dans la base de données. De cette façon, vous pouvez combiner le modèle économique et le modèle de données dans des classes uniques.

+1

Pouvez-vous énumérer les raisons qui font de zend-db-table un mauvais choix? –

+1

Je me demandais à peu près la même chose. On dirait que beaucoup de gens suivent ce battement marketing produit par GOF, Martin Fowler, Eric Evans mais presque personne ne peut vraiment expliquer pourquoi mes projets bénéficieraient de leurs idées. en revanche - Wordpress n'a pas un seul résumé ou classe d'interface - et c'est un produit très réussi. J'ai décidé qu'il était probablement préférable d'être axé sur les résultats plutôt que de passer des années à faire des analisys-paralisys avec des avantages introuvables. – Stann

+0

@Andre - Wordpress étant très populaire ne signifie pas qu'il est bien écrit. Je n'ai pas vraiment aimé travailler avec son code et j'ai eu du mal à m'adapter à mes besoins. Probablement parce que les auteurs étaient plus axés sur les résultats que de faire quelque chose qui était facilement extensible/évolutif/adaptable. En fonction de votre projet, il peut être exagéré de procéder à une modélisation complète des données ou d'utiliser des ORM, mais si vous pensez au sujet, alors il vaut la peine d'étudier les alternatives. – chrismacp

Questions connexes