Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-03-2009 16:45:09

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

question à propos de la conception des classes "Model"

Hello,

je travaille actuellement sur un projet MVC et je me posais une question concernant la conception des classes modèles.

ok prenons un exemple:
j'ai une classe Annonce avec les bons paramètres qui représente ma table annonce dans ma DB.

Code:

class Annonce extends Zend_Db_Table_Abstract  {
...

Je souhaiterais personnaliser le constructeur, or si je lui passe un tableau cela pose pb avec le constructeur de la classe Zend_Db_Table_Abstract.

Par exemple je souhaiterais avoir

Code:

class Annonce extends Zend_Db_Table_Abstract  {

    public function __construct($opt = array()){
    }
...

je suis donc obligé de passer par une fonction qui va initialiser ma classe, mais ce n'est pas vraiment son rôle.
Vous me suivez ?

Comment initialiser ma classe Annonce avec un tableau sans rentrer en conflit avec la classe parente ?
Je peux bien sur passer des autres variables type int ou string mais pas array, du fait de la déclaration de la classe Zend_Db_Table_Abstract.

Dernière modification par bucheron (09-03-2009 13:54:26)

Hors ligne

 

#2 06-03-2009 17:43:59

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: question à propos de la conception des classes "Model"

Hello,

Il faut utiliser init :

Code:

class Annonce extends Zend_Db_Table_Abstract  {

    public function init($opt = array()){
    }
...

A+

Dernière modification par mikaelkael (06-03-2009 17:44:11)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 06-03-2009 17:58:02

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: question à propos de la conception des classes "Model"

hmm pas vraiment, car init() est appelé par le constructeur... Il faudrait que tu appeler le constructeur parent dans ton constructeur

Code:

parent::__construct();

Hors ligne

 

#4 06-03-2009 18:09:59

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: question à propos de la conception des classes "Model"

il prend déjà un tableau de config en argument

Code:

class Annonce extends Zend_Db_Table_Abstract  {

    public function __construct($config = array(), $opt = array()){
    }
...

et lorsque tu l'instancie tu l'appelle soit avec une conf soit avec une conf et ton tableau, soit avec ton tableau mais alors tu dois lui passer null ou array en premier argument

j'ai moi utilisé directement le tableau config

Code:

class Annonce extends Zend_Db_Table_Abstract  {
    const MYOPTION = "ma super option"

    public function __construct($config = array()){
        parent::__construct($config);
        foreach ($config as $key => $value) {
            switch ($key) {
                case self::MYOPTION :
                    $this->_setMyOption($value);
                    break;
                default:
                    // ignore unrecognized configuration directive
                    break;
            }
        }

    }
...

du coup je peux ajouter toutes les options que je veux il suffit de ne pas utiliser le même non qu'une déjà existante

Code:

    const ADAPTER          = 'db';
    const SCHEMA           = 'schema';
    const NAME             = 'name';
    const PRIMARY          = 'primary';
    const COLS             = 'cols';
    const METADATA         = 'metadata';
    const METADATA_CACHE   = 'metadataCache';
    const ROW_CLASS        = 'rowClass';
    const ROWSET_CLASS     = 'rowsetClass';
    const REFERENCE_MAP    = 'referenceMap';
    const DEPENDENT_TABLES = 'dependentTables';
    const SEQUENCE         = 'sequence';

ZF est open source alors n'hésitez pas à ouvrir pour voir
A+JYT

Dernière modification par sekaijin (06-03-2009 18:15:01)

Hors ligne

 

#5 06-03-2009 19:25:47

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: question à propos de la conception des classes "Model"

Hello,

Il est grand temps que je me couche yikes

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 09-03-2009 11:53:18

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: question à propos de la conception des classes "Model"

merci pour ces éclaircissements.

Hors ligne

 

#7 09-03-2009 13:59:53

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: question à propos de la conception des classes "Model"

Petite question:

je me suis aperçu que si je mettais l'appel à la classe parente à la fin du constructeur cela me génère l'erreur suivante:

Code:

Fatal error: Call to a member function describeTable() on a non-object in C:\wamp\www\ZendSVN\Zend\Db\Table\Abstract.php on line 727

Code:

public function __construct($config = array()){
       // Code... 
        parent::__construct($config);
    }

alors que le code ci dessous fonctionne.

Code:

public function __construct($config = array()){
        parent::__construct($config);
       // Code... 
    }

Savez vous pouquoi ?

Hors ligne

 

#8 09-03-2009 15:08:08

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: question à propos de la conception des classes "Model"

c'est que dans ton code placé avant tu fait appel à est élément de l'objet courant qui ne sont pas encore initialisé
apparemment tu dois faire appel à l'objet DB qui n'est pas encore attacher à l'objet courant

A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages