Doctrine et model classes

Doctrine et model classes - PHP - Programmation

Marsh Posté le 13-10-2009 à 11:52:29    

Bonsoir
 
Imaginons une table USER.
 
On va ensuite générer les classes.

Code :
  1. Doctrine::generateModelsFromDb('models', array('doctrine'), array('generateTableClasses' => true));


 

Code :
  1. class User extends BaseUser
  2. {
  3. }


 
Ensuite on a généré un squelette doctrine_Table
 

Code :
  1. class UserTable extends Doctrine_Table
  2. {
  3. }


Dans la documentation on nous dit cela.
 

Citation :

You can place custom functions inside the User and UserTable classes to customize the functionality of your models. Below are some examples:


 
Je ne comprends pas très bien la différence entre ces deux classes,quel est le rôle de chacune d'entre elle et que doivent t'elles contenir?
 
Merci

Reply

Marsh Posté le 13-10-2009 à 11:52:29   

Reply

Marsh Posté le 13-10-2009 à 16:14:38    

Normalement dans User tu ajoutes des méthodes propres à ton objet.
 
Ça pourrait être par exemple une méthode getAge() qui, à partir de la date de naissance de ton user, ferait directement le calcul de son age.
 
Ou par exemple, une méthode lock() qui bloquerait un compte utilisateur, si celui-ci se trompe 3 fois dans son login.
 
Dans UserTable, tu ajoutes des méthodes qui la plupart du temps consistent à faire des Doctrine_Query.
 
Le but en général, c'est que les méthodes de ta UserTable te renvoient un objet User ou une collection d'objets User.


---------------
Mon Feedback !
Reply

Marsh Posté le 14-10-2009 à 12:41:59    

Merci bien.

Reply

Marsh Posté le 15-10-2009 à 11:08:36    

DU coup je ne comprends pas bien pourquoi sur leur tuto jobeet ils font ceci.
// lib/model/doctrine/JobeetJobTable.class.php
 

Code :
  1. class JobeetJobTable extends Doctrine_Table
  2. {
  3.   static public $types = array(
  4.     'full-time' => 'Full time',
  5.     'part-time' => 'Part time',
  6.     'freelance' => 'Freelance',
  7.   );
  8.   public function getTypes()
  9.   {
  10.     return self::$types;
  11.   }
  12.   // ...
  13. }

Reply

Marsh Posté le 15-10-2009 à 11:15:47    

J'ai bien dit en général.
 
Ce cas aussi est justifié. Tu ne vas pas mettre cette méthode dans JobeetJob. Dans JobeetJob, tu as getType() qui va te renvoyer le type pour l'objet concerné.
Dans JobeetJobTable, tu as getTypes() qui te renvoit les différents types possibles. Ou-est ce que tu voudrais mettre ça sinon ?


---------------
Mon Feedback !
Reply

Marsh Posté le 15-10-2009 à 21:56:21    

Tirkyth a écrit :

J'ai bien dit en général.
 
Ce cas aussi est justifié. Tu ne vas pas mettre cette méthode dans JobeetJob. Dans JobeetJob, tu as getType() qui va te renvoyer le type pour l'objet concerné.
Dans JobeetJobTable, tu as getTypes() qui te renvoit les différents types possibles. Ou-est ce que tu voudrais mettre ça sinon ?


 
Autant pour moi.
 
 

Reply

Marsh Posté le 16-10-2009 à 11:59:22    

masseur a écrit :


 
Autant pour moi.
 
 


Y'a pas de mal. Mais c'était une vraie question tu sais :) A part à cet endroit, je ne vois pas où on pourrait le mettre ailleurs.
L'autre solution ça serait d'avoir une table dédiée pour les types de jobs, mais dans le tutorial c'est pas la solution qui a été choisie. En effet, il est peu intéressant d'avoir ces types administrables


---------------
Mon Feedback !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed