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

Langage PHP Discussion :

transmettre des données d'une classe à une autre [POO]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut transmettre des données d'une classe à une autre
    Bonsoir,
    j'ai une application MVC et mon contrôleur récupère des données du modèle, et doit les transmettre à une vue pour les afficher. C'est là que ça coince. En effet, je ne transmets qu'un tableau vide et ne vois pas comment faire. Voici mon code actuel :
    le contrôleur :
    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
     
    class LDispInfoBySelect
    {
        public $sesaid;             //j'avais mis les attributs en private puis ai essayé de les mettre en public, mais ça ne résoud rien
        public $appli_key;
        public $currently_active;
        etc
     
     
        public function invoke()
        {
             //lire table license (model)
            $info_licenses=new LSelectInBDD();
     
            $info=$info_licenses->getInfoLicense($sesa);   //le tableau $info est le retour d'un FetchAll
            $this->appli_key=$info[0]['application_key'];
            $this->currently_active=$info[0]['currently_active'];
            etc
        }
     
         public function send_data_to_display():array
        { 
            return(['sesaid'=>$this->sesaid,
                    'platform'=>$this->platform,
                    etc
                    ]);

    puis la vue :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class License
    {
        private $LDispInfoBySelect;
     
        public function LDispInfoBySelect()
        {
            $this->LDispInfoBySelect=new LDispInfoBySelect();
            $data_to_display=($this->LDispInfoBySelect)->send_data_to_display();  
            etc
        }
    Le souci est que dans la méthode de la vue LDispInfoBySelect, la variable $data_to_display est vide. Où est l'erreur, SVP ?


    • PS1 : les classes sont bien trouvées. Y a un autoloader et je fais des use
    • PS2 : dans la méthode invoke du contrôleur, la variable $this existe bien mais dans la méthode send_data_to_display, non. Pourquoi ?

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Solution trouvée : comme la méthode invoke du contrôleur connait $this , elle appelle directement la méthode send_data_to_display puis fait appel à une méthode "vue" (à qui elle transmet les données en argument), en charge de l'affichage.

    Le code du contrôleur :
    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
    class LDispInfoBySelect
    {
        private $sesaid;
        private $appli_key;
        etc
     
        private function invoke()
        {
             //lire table license (model)
            $info_licenses=new LSelectInBDD();
            $info=$info_licenses->getInfoLicense($sesa);     //le tableau $info est le retour d'un FetchAll
     
            $this->appli_key=$info[0]['application_key'];
            $this->currently_active=$info[0]['currently_active'];
            etc
     
            $data_to_display=self::send_data_to_display();
     
            $view_license=new License();
            $view_license->LDispInfoBySelect($data_to_display);
        }
     
        private function send_data_to_display():array
        {   
            return(['sesaid'=>$this->sesaid,
                    'platform'=>$this->platform,
                    etc
                    ]);

    Le code de la vue :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class License
    {
        public function LDispInfoBySelect($data)
        {  
        affichage de $data avec la classe  PhpEcho
        }
    Explications de la super classe PhpEcho

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] recevoir des données dans une autre classe
    Par johntheripper dans le forum GUI
    Réponses: 8
    Dernier message: 01/03/2017, 18h46
  2. Transmettre des données d'une page à l'autre
    Par fl0_9 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 23/05/2011, 22h49
  3. passer des données a une autre page php
    Par questionneuse dans le forum Langage
    Réponses: 10
    Dernier message: 25/01/2006, 01h56
  4. [VBA] Transmettre des données d'une feuille à l'autre
    Par Overflow64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2005, 10h58
  5. Réponses: 4
    Dernier message: 19/09/2005, 16h59

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