IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

[débutant] Objets et Métiers


Sujet :

MVC PHP

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Par défaut [débutant] Objets et Métiers
    Bonjour à tous,

    Je débute dans ZF et j'ai lu beaucoup d'articles, de tutos et livre "Zend Framework - Bien développer en php" mais voilà je ne comprends toujours pas ou mettre mon code métier.

    Avant je faisais des choses dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    class User {
    private $id;
    private $login;
    private $pass;
    private $moyenne_annuel;
    ...
    public function __construct($id){
    //Chargement des données d'un utilisateur selon sont id
    //...
    }
    //GETTEUR
    public function getId()
    {
    return $this->id;
    }
    ...
    //SETTEUR
    public function setId($value){
    $this->id = $value;
    }
    //...
    //Fonction exemple de traitements
    public function getCalculMoyenne($note)
    {
    if($this->moyenne_annuel + $note > 12)
    {
    //traitement
    }
    else
    {
    //autre traitement
    }
    return true;
    }
    Avec ZF et Zend_Db_Table_Abstract je me suis apercu que je pouvais gagner un temps fou pour récuperer les données de ma base.
    Chaque table devenant un objet.

    Mon problème est que je ne sais pas ou placé mes fonctions qui me permettront d'utiliser les attributs de ma classe qui étends de Zend_Db_Table_Abstract

    Par exemple, je ne peux pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    class TUser extends Zend_Db_Table_Abstract
    {
    	/**
    	 * The default table name 
    	 */
        protected $_name = 'USER';
        protected $_primary = 'UID';
     
        public function getCalculMoyenne($note)
        {
           if($this->moyenne_annuel + $note > 12)
           {
            //traitement
           }
           else
           {
            //autre traitement
           }
           return true;
        }
    }
    Alors ma question est : Ou placer le code de mes fonctions pour mes objets ?

    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 47
    Par défaut
    C'est pourtant comme ça qu'il faut faire, il faut juste que moyenne_annuel (que tu utilises en $this->moyenne_annuel), soit un champ de ta table.

  3. #3
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour, et bienvenue sur les forums de developpez.com

    Pour accéder aux données d'une table avec Zend_Db_Table_Abstract, il faut déjà récupérer ces données.

    Pour ça, il faut utiliser une des méthodes de récupération de données comme find(), fetchAll(), etc.

    En général, ces méthodent retournet un objet Zend_Db_Table_Rowset_Abstract qui contient lui même l'ensemble des résultats dans des objets Zend_Db_Table_Row. C'est uniquement à partir de cette dernière classe que tu peux accéder directement aux données de la table.

    Un exemple d'utilisation (sans gérer les éventuelles erreurs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public function getCalculMoyenne($userId, $note)
    {
        $rows = $this->find($userId); // $rows est un Zend_Db_Table_Rowset_Abstract
        $row = $rows->current(); // $row est un Zend_Db_Table_Row
        if($row->moyenne_annuel + $note > 12)
        {
            //traitement
        }
        else
        {
            //autre traitement
        }
        return true;
    }
    Tu peux ainsi par exemple mettre ton code métier dans une classe étendant Zend_Db_Table_Abstract, mais aussi dans une classe étendant Zend_Db_Table_Row_Abstract (si tu veux que tes traitements aient lieu au niveau d'un enregistrement d'une table).

Discussions similaires

  1. [AJAX] Objet XMLHttpRequest, status ne retourne rien
    Par IanBussieres dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/03/2008, 10h54
  2. [Débutant] Objets non affichés dans ma fenêtre
    Par G_angel dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 30/01/2007, 13h03
  3. Réponses: 3
    Dernier message: 09/01/2007, 17h16
  4. [Débutant] Objet ou Attribut qui disparait
    Par Clark dans le forum C++
    Réponses: 16
    Dernier message: 22/05/2006, 16h24
  5. [Débutant] Objet découpé et perspective
    Par Pedro dans le forum DirectX
    Réponses: 20
    Dernier message: 25/01/2005, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo