1. #1
    Membre à l'essai Avatar de gautier1er
    Homme Profil pro
    Webmaster
    Inscrit en
    août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : août 2017
    Messages : 35
    Points : 19
    Points
    19

    Par défaut un objet vide en programmation orientée objet

    Code php : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     <?php
    class Membre
      {
    	  //attributs
    	  private $_pseudo; 
           private $_password;                   
             private $_mail; 
     
    	  //constructeur
    	 public function  __construct( array $donnees)
         {
           $this->hydrateMembre($donnees);
         }
     
     
    	 //getters (accesseurs) 
    	 public function   getPseudo()
         {
     
          return  $this->_pseudo;
         }
     
    public  function  getPassword()
    {
     
    return  $this->_password;
    }
     
    	public  function  getMail()
        {
     
          return  $this->_mail;
        }
     
     
    //setters
    public function setPseudo($login)
    {
      $this->_pseudo=$login;
    }
     
      public  function  setPassword($mdp)
     {
     
           $this->_password=$mdp;
     
     }
     
    public function setMail($Adressemail)
    {
     
      //on verifie si c'est vrai une adresse mail 
      if($this->isMail($Adressemail))
      {
       $this->_mail=$Adressemail; 
      }
    }
     
    public function isMail($mail)
    {
     
     return preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$mail);
    }
     
     
      }
     
      ?>



    Code php : 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
     <?php
    class MembreManager
     {
     
          //attribut
        private $_db;
     
        //constructeur
        public function  __construct($db)
        {
         $this->setDb($db);
        }
     
      public function getSectionFromDB(Membre $user)
      {
       $req=$this->_db->prepare('SELECT idSection FROM membre WHERE   PseudoMembre=?');
       $req->execute(array($user->getPseudo() ) );
       $donnee=$req->fetch(PDO::FETCH_ASSOC);
       return $donnee['idSection'] ;
      }
     
     
       public function getMembre($id)
       {
     
       $req=$this->_db->prepare('SELECT * FROM membre WHERE idSection=?');
       $req->execute(array($id ) );
       $donnee=$req->fetch(PDO::FETCH_ASSOC);
       return new Membre($donnee);
       } 
     
     }
     
      ?>

    le but est de mettre les données de l'utilisateur dans les variables de session
    un utilisateur se connecte à partir de son pseudo et son mot de passe.
    J'aimerai stocker le pseudo, l'email, la section et la date d'inscription de l'utilisateur dans les sessions

    Donc j'ai crée mes deux objets pour la vérification des données envoyé par le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	 $manager=new MembreManager($db);
     
    	$user=new Membre(array('pseudo'=>$login,'password'=>$pass) );
    //on fait les vérifications ici

    Toutes les données de l'utilisateur sont correctes donc je crée un objet qui récupère les données de l'utilisateur dans la base de données


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	//on récupère les données de l'utilisateur
              $utilisateur=$manager->getMembre($id);
    Mais quand j'utilise l'objet $utilisateur
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $utilisateur->getPseudo() ;
    $utilisateur->getMail();
    l'objet est vide.

    J'ai besoin de votre aide.


    cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 741
    Points : 42 722
    Points
    42 722

    Par défaut

    Ou est la methode hydrateMembre ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai Avatar de gautier1er
    Homme Profil pro
    Webmaster
    Inscrit en
    août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : août 2017
    Messages : 35
    Points : 19
    Points
    19

    Par défaut

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      public function hydrateMembre(array $donnees )
     {
            foreach($donnees as $cle=> $valeur)
            {
              $methode='set'.ucfirst($cle);
              if(method_exists($this, $methode))
              {
               $this->$methode($valeur);
              }
            }
     
      }

    J'ai aussi ajouté des attributs et méthodes à ma classe Membre ci dessus

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 741
    Points : 42 722
    Points
    42 722

    Par défaut

    Pourquoi cette méthode n'est pas dans les codes que tu nous as donné ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai Avatar de gautier1er
    Homme Profil pro
    Webmaster
    Inscrit en
    août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : août 2017
    Messages : 35
    Points : 19
    Points
    19

    Par défaut

    J 'ai enlevé des méthodes et attributs pour aller au but du sujet. Excusez moi si vous aviez trouvé cela impeu bizarre.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 741
    Points : 42 722
    Points
    42 722

    Par défaut

    As-tu debugué un peu ?
    Par exemple est-ce que la requête dans getMembre() donne un résultat ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai Avatar de gautier1er
    Homme Profil pro
    Webmaster
    Inscrit en
    août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : août 2017
    Messages : 35
    Points : 19
    Points
    19

    Par défaut

    C'est le problème même qui est là "l'objet est vide " , cela veut dire que la requête retourne rien peut-être

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 741
    Points : 42 722
    Points
    42 722

    Par défaut

    la requête retourne rien peut-être
    Il faut vérifier
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    4 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 4 416
    Points : 11 006
    Points
    11 006
    Billets dans le blog
    3

    Par défaut

    Salut,

    manque d'explications mais je pense que tu débutes en POO PHP et tu ne connais pas toutes les règles qui s'y appliquent.
    Tiens lis ça et je pense que dans ton cas ce qui est important :
    Afin de pouvoir désérialiser (unserialize()) un objet, la classe de l'objet doit être définie, pour permettre sa reconstruction.
    # Dans la Création, tout est permis mais tout n'est pas utile...

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    avril 2007
    Messages
    7 215
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 7 215
    Points : 14 478
    Points
    14 478

    Par défaut

    Citation Envoyé par gautier1er Voir le message
    C'est le problème même qui est là "l'objet est vide " , cela veut dire que la requête retourne rien peut-être
    Citation Envoyé par sabotage Voir le message
    Il faut vérifier
    Et donc, tu as vérifié ? la requête renvoie bien quelque chose ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre à l'essai Avatar de gautier1er
    Homme Profil pro
    Webmaster
    Inscrit en
    août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : août 2017
    Messages : 35
    Points : 19
    Points
    19

    Par défaut

    Citation Envoyé par rawsrc Voir le message
    Afin de pouvoir désérialiser (unserialize()) un objet, la classe de l'objet doit être définie, pour permettre sa reconstruction.
    J'utilise ce code ci dessous dans ma page (en haut avant le <!DOCTYPE html>)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function chargerClasse ($classe)
    {
    require '../classes/'.$classe.'.class.php';
    }
    spl_autoload_register ('chargerClasse');

Discussions similaires

  1. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 02h04
  2. Réponses: 2
    Dernier message: 30/03/2006, 15h48
  3. [C#] Comment correctement programmer orienté objet ?
    Par ChristopheOce dans le forum C#
    Réponses: 5
    Dernier message: 06/02/2006, 14h22
  4. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Syntaxe
    Réponses: 5
    Dernier message: 10/12/2005, 12h33
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 13h59

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