2010-02-10 6 views
0

J'ai une question sur Zend Framework et principalement la partie modèle. Je sais qu'il n'y a pas de classe de modèle abstrait et je comprends pourquoi. J'ai lu beaucoup de billets de blog à ce sujet, mais je n'ai pas trouvé d'exemple qui me l'expliquerait clairement. Je construis une application très basique. Imaginons que nous ayons seulement trois tables. société (ID, nom, rue, rueNo, ville), meta (ID, nom, description), company2meta (ID, companyID, metaID, valeur, note). Tous les types de realtionship sont là (1n n1, nm). Le besoin a aussi des services (amf) avec des objets de valeur. Alors, voici ce que je pense:Zend Framework modèle avec service

  1. Je voudrais créer trois classes de table sous /model/dbTables/(Company.php, Meta.php, Company2Meta.php). Puis dans les modèles /, j'ajouterais User.php (classe de base), qui devrait avoir des méthodes telles saveCompany ..., deleteCompany, getCompanyMeta ..., et opère au-dessus des tables sélectionnées.

  2. La classe de service (/services/CompanyService.php) créerait une instance du modèle dans le constructeur et aurait les mêmes méthodes que le modèle.

Et voici ma question. Comment les données devraient-elles circuler et que devrait-on faire où? Par exemple quand j'appelle getCompany dans le service clas je le veux pour renvoyer l'objet de valeur, qui contient toutes les informations sur la compagnie et sur ses métas. s'il n'y aurait pas la classe de modèle, on pourrait simplement obtenir une ligne de compagnie et un ensemble de lignes de mate2company et les transformer en objet de valeur, et quand je veux le mettre à jour, je dois enregistrer des informations sur la société et ses métas (insérer), ancien (mettre à jour) et supprimer le supprimé ...) Alors, où cela devrait-il être fait? en modèle ou en service? J'espère que vous pouvez comprendre ce que je demande.

ps: désolé pour mon anglais ...

Répondre

0

votre modèle utilisateur doit comme ceci:

class App_Model_User 
{ 
    protected $_data = array(
     'id' => null, 
     'username' => null, 
     'companyId' => null, 
     'company' => null 
    ); 

public function setId($id) 
{ 
    $this->_data['id'] = $id; 
} 

public function getId() 
{ 
    return $this->_data['id']; 
} 

//Other setters getters.. 

public function setCompany(Cms_Model_Company $company) 
{ 
    $this->_data['company'] = $company; 
} 

public function getCompany() 
{ 
    if (null == $this->_data['company']) { 
     $this->setCompany(Cms_Service_Company::find($this->_data['companyId'])); 
    } 

    return $this->_data['company']; 
} 
} 

Comme un utilisateur et une entreprise sont encore thnigs, ils doivent être un autre modèle.