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

PHP & Base de données Discussion :

retourner json dans le Constructeur [PDO]


Sujet :

PHP & Base de données

  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut retourner json dans le Constructeur
    bonsoir,
    je voudrais savoir si un constructeur d'une class php peut écrire du json_encode($monObjet)?
    genre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class User{
    private $rep;
    public function __construct($user) {
        $this->rep=array("var1"=>"valeur1","var2"=>"valeur2");
        /* return ou echo */ json_encode($rep);
        }
    }
    je sais que je peux mettre une fonction public dans la class User qui retourne json_encode($rep)e, mais sans l'utilisation d'une fonction, est-ce que ce serai possible?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    un constructeur ne peux pas retourner de valeur parce qu'en créant un objet, c'est l'objet qui est retourné.

    si vous n'avais pas besoin de récupérer cet objet, vous pouvez utiliser une fonction statique comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    class User
    {
     
        static function resultat() 
        {
            return "résultat";
        }
     
    }
     
     
    echo User::resultat();

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Citation Envoyé par mathieu Voir le message

    si vous n'avais pas besoin de récupérer cet objet, vous pouvez utiliser une fonction statique ...
    j'ai besoin de cet objet qui a été crée par la class Users pour l'envoyer à une autre Class B qui le traite dans son constructeur.
    j'explique ce que j'ai pour le moment, et ce que je voudrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Users{
     private $rep;
      function __construct($us){
      $this->rep=array("var1"=>"valeur1","var2"=>"valeur2",....);
      }
      public function getRepUser(){
        return json_encode($this->rep);
      }
    }
    Class B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php 
    require("Users.php");
    class B{
    private  $repB;
     function __construct($b){
     $user=new Users($b);
     $decode=json_decode($user->getRepUser());
     $this->repB=array("b1"=>$decode->var1,"b2"=>$decode->var2);
     }
     public function getRepB(){
       return  json_encode($this->repB);
    }
    }
    je cherche un moyen pour récupérer le contenu du $rep de la class Users, dans la class B, sans passer par la fonction getRepUser.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    $rep étant un attribut privé de User, la seule façon d'y accéder à l'extérieur de User est d'utiliser le getter (c'est comme qui dirait le principe d'une propriété privée )
    Cela dit, est-ce que tu as réellement besoin que $rep soit un attribut de User ? ou est-ce que tu pourrais créer une fonction publique de User qui construit cet élément et l'appeler à la fois dans le constructeur de User et dans celui de B ? ou peut-être que B devrait hériter de User ?
    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 - PDO une soupe et au lit !.

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

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    si je comprends bien, $rep ne doit pas être un attribut de la classe Users?
    $rep n'est qu'un tableau qui contient des informations sur l'objet crée, qui vont être envoyées à la classe B. puis le traitement dans le constructeur de la classe B sera basé sur les variables de ce tableau.
    j'espère que j'étais assez claire.

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

Discussions similaires

  1. exception dans un constructeur
    Par xxiemeciel dans le forum C++
    Réponses: 25
    Dernier message: 23/11/2005, 18h14
  2. Réponses: 3
    Dernier message: 06/11/2005, 18h02
  3. Réponses: 1
    Dernier message: 06/11/2005, 17h55
  4. [debutant] rappel de la classe dans le constructeur
    Par newtito dans le forum Débuter
    Réponses: 6
    Dernier message: 05/10/2005, 00h15
  5. Capture d'exception dans un constructeur
    Par declencher dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/02/2004, 12h52

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