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 :

heritage de classe [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 15
    Points
    15
    Par défaut heritage de classe
    Bonsoir,
    je suis censée me servir des attributs $nom et $prenom de la classe personne pour la classe stagiaire et la classe administratif
    mais lorsque j'instancie mes deux classes dans mon lanceur je reçois cette erreur :
    Fatal error: Cannot redeclare class Personne in C:\wamp\www\Personne.php on line 3
    voici mes classes crées ainsi que mon lanceur , je ne trouve pas où j'aurais declaré ma classe personne plusieurs fois .
    si quelqu'un avait une petite idée
    merci d'avance

    Ma classe personne:
    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
    <?php
    class Personne{
        protected $nom;
        protected $prenom;
     
        public function __construct($nom, $prenom) {
            $this->nom = $nom;
            $this->prenom = $prenom;
        }
        public function getNom() {
           return $this->nom;
       }
       public function getPrenom() {
           return $this->prenom;
       }
       public function setNom($nom) {
           $this->nom = $nom;
       }
       public function setPrenom($prenom) {
           $this->prenom = $prenom;
       }
     
    }

    Ma classe Administratif:
    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
    <?php
    include './Personne.php';
    class Administratif extends Personne {
        private $poste;
        public function __construct($nom, $prenom, $poste) {
            parent::__construct($nom,$prenom);
            $this->poste = $poste;
        }
        public function getPoste() {
            return $this->poste;
        }
        public function setPoste($poste) {
            $this->poste = $poste;
        }   
    }
    Ma classe Stagiaire:
    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
    <?php
    include './Personne.php';
    class Stagiaire extends Personne{
     
            private $numero;
     
    function __construct($nom,$prenom,$numero) {
               parent::__construct($nom,$prenom);
               $this->numero = $numero;
           }  
           public function getNumero() {
               return $this->numero;
           }
           public function setNumero($numero) {
               $this->numero = $numero;
           }
    }
    et enfin Mon lanceur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    include './Administratif.php';
    include './Stagiaire.php';
    $stagiaire=new Stagiaire("mister","T","22");
    $admin= new Administratif ($nom,$prenom,"stagiaire");
    echo "nom:{$stagiaire->getNom()} prenom:{$stagiaire->getPrenom()} "
    . " numero:{$stagiaire->getNumero()}poste{$admin->getPoste()}";

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tes deux classe incluent Personnes et tu inclus tes deux classes dans ton script , il y'a donc une première inclusion de Personne avec Administratif puis une seconde avec Stagiaire ce qui n'est pas possible.
    Plusieurs solutions :

    - Utiliser un autoload pour se passer des includesdans tes classes
    - Utiliser include_once ou require_once
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    bonjour et merci pour ta reponse

    effectivement c'etait bien le problème. en utilisant include_once tout est rentré dans l'ordre .

    encore merci

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

Discussions similaires

  1. [Heritage de classes] - acceder à une fonction
    Par buzzkaido dans le forum C++
    Réponses: 19
    Dernier message: 02/03/2007, 16h00
  2. Heritage de classes vcl
    Par Revan777 dans le forum C++Builder
    Réponses: 5
    Dernier message: 01/02/2007, 09h57
  3. Réponses: 6
    Dernier message: 28/12/2006, 18h22
  4. Heritage de classe avec classes internes
    Par Regis.C dans le forum Langage
    Réponses: 11
    Dernier message: 27/04/2005, 12h19
  5. [FLASH MX2004] Heritage de classe
    Par bolo dans le forum Flash
    Réponses: 9
    Dernier message: 05/12/2004, 13h08

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