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 :

[Tableaux] Plusieurs constructeurs php5


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Par défaut [Tableaux] Plusieurs constructeurs php5
    Bonjour,

    Je suis bien avec une version supérieur à php 5.1 et j'aimerai savoir comment déclarer plusieurs constructeur ?

    si je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Divers{
     function __construct($var1,$var2){
     }
     function __construct($var1){
     }
    }
    il me sort une erreur du type:

    Fatal error: Cannot redeclare Divers::__construct() in Divers.php on line 71
    cette ligne 71 indique mon 2eme constructeur.

    j'ai rien trouvé là dessus sur le net

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    tu ne peut pas (de cette maniere)
    et de toute facon ca sert presque qu'a rien en php
    fait une recherche sur le forum

  3. #3
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Citation Envoyé par jeff_!
    fait une recherche sur le forum
    Avec sa signature il y a presque à parier qu'il l'a déjà faite
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Tu ne peux pas overloader le constructor en PHP.

    Par contre, tu peux te débrouiller comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function __construct() {
       $num_args=func_num_args();
       switch ($num_args) {
          // ici tes cases
       }
    }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Par défaut
    On ne peut pas déclarer plusieurs constructeurs en PHP. Tu peux t'en sortir en utilisant func_num_args et func_get_arg :

    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
     
    class Divers{
     
    private $var1;
    private $var2;
     
    function __construct()
    {
       $num=func_num_args();
     
       switch($num)
       {
          case 1:
             //un seul paramètre passé
             $this->var1=func_get_arg(0);
             break;
          case 2:
             //deux paramètres passés
             $this->var1=func_get_arg(0);
             $this->var2=func_get_arg(1);
             break;
          default:
       }
    }
    }

  6. #6
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Il y a aussi d'autres propositions dans les commentaires de la doc :
    http://fr.php.net/manual/fr/language...econ.php#68028

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Par défaut
    Citation Envoyé par fredo31
    On ne peut pas déclarer plusieurs constructeurs en PHP. Tu peux t'en sortir en utilisant func_num_args et func_get_arg :
    Citation Envoyé par KiLVaiDeN
    $num_args=func_num_args();
    On peut donc créer un constructeur sans aucun parametre et en fournir autant que l'on veux ?

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    hello,

    exactement.

    sinon pour etre plus propre, il peut etre plus intéressant de passer tes args par un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $truc = new machin( array( 'bidule'=>'aa' , 'chose'=>'bb' ... ) );
    certes c'est un peu plus chiant mais ca a l'avantage d'etre clair.

    sinon dans ton constructeur, tu peux aussi switcher sur divers pseudo-constructeurs suivant la valeur de func_num_args()...

    enfin bref les méthodes sont nombreuses pour palier au manque de surcharge

  9. #9
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Par défaut
    ok je viens de faire un grand pas encore aujourd'hui

    bon Merci à tous , et sinon derniere petite précision:
    Cette méthode fonctionne avec n'importe quel fonction ou est-ce propre au class ? constructeur ?

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par maximenet
    On peut donc créer un constructeur sans aucun parametre et en fournir autant que l'on veux ?
    Les constructeurs comme les méthodes ou encore les fonctions (ceux sont toutes des fonctions pour php après je suppose).


    Julp.

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

Discussions similaires

  1. [c#] Plusieurs constructeurs dans une classe
    Par Seth77 dans le forum C#
    Réponses: 3
    Dernier message: 04/09/2006, 12h28
  2. [Tableaux] Erreur syntaxique sur constructeur, PHP5
    Par fredrik dans le forum Langage
    Réponses: 2
    Dernier message: 14/08/2006, 14h51
  3. Plusieurs constructeurs en PHP 4
    Par V_R46 dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2006, 12h48
  4. Tableaux à plusieurs dimensions
    Par Diabolik dans le forum Assembleur
    Réponses: 3
    Dernier message: 08/12/2003, 12h15

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