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 :

Héritage en PHP


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut Héritage en PHP
    Bonjour à tous,

    Voilà, j'ai un problème. Je souhaite faire un héritage de classes en PHP. Je sais très bien comment fonctionne l'héritage et je m'en suis déjà servi en C++ et en java. Mais voilà, en PHP et bien ça ne roule pas!

    Voici mon code pour être plus clair :

    fichier class_noteorganisation.inc.php
    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
    <? Class noteorganisation
    {
    	var $IdNoteOrganisation;
    	var $ChefStage;
     
     
    	/** Fonction : noteorganisation()
    	*   Constructeur de la Classe
    	*/
    	function noteorganisation()
    	{
    		$this->IdNoteOrganisation=0;
    		$this->ChefStage="";
     
    	}
     
    }
    ?>

    fichier class_ancelle_su.inc.php
    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
    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
    <? require ("./class_noteorganisation.inc.php");
    Class ancelle_su extends noteorganisation
    {
    	var $IdAncelle_SU;
      	var $MoyenTransport;
    	var $HeureDepart;
    	var $HeureArrivee;
      	var $AdresseAlimentation;
    	var $AdresseFraisAnnexes;
     
    	/** Fonction : ancelle_su()
    	*   Constructeur de la Classe
    	*/
    	function ancelle_su()
    	{
    		$this->IdAncelle_SU=0;
    		$this->MoyenTransport="";
    		$this->HeureDepart=0;
    		$this->HeureArrivee=0;
    		$this->AdresseAlimentation="";
    		$this->AdresseFraisAnnexes="";
    		$this->noteorganisation();
     
    	}
     
    	function afficher()
    	{
    	?>
    	<table border="1">
    		<form action="./traitement_ancelle_su.php" method="post">
    		<tr>
    			<td>Chef de Stage : </td>
    			<td><input type="text" name="ChefStage"></td>
    		</tr>
    		<tr>
    			<td>Moyen de Transport : </td>
    			<td><input type="text" name="MoyenTransport"></td>
    		</tr>
    		<tr>
    			<td>Heure de Départ : </td>
    			<td><input type="text" name="heuredepart" value="hh:mm:ss"></td>
    		</tr>
    		<tr>
    			<td>Heure d'arrivée : </td>
    			<td><input type="text" name="heurearrivee" value="hh:mm:ss"></td>
    		</tr>
    		<tr>
    			<td>Adresse Facturaction Alimentation : </td>
    			<td><textarea name="adressealim"></textarea></td>
    		</tr>
    		<tr>
    			<td>Adresse Facturation Frais Annexes : </td>
    			<td><textarea name="adresseAnnexes"></textarea></td>
    		</tr>
    		<tr>
    			<td colspan="2"><input type="submit" value="Valider" name="ajouter"></td>
    		</tr>
    		</form>
    	</table>
    	<?
    	}
     
    }
    ?>
    fichier traitement_ancelle_su.php
    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
    <? include("./class_database.inc.php");
    include("./class_ancelle_su.inc.php");
    include("./class_noteorganisation.inc.php");
     
    //Instanciation des classes
     
    $base=new DataBase();
    $ancelle_su=new ancelle_su();
     
    if (isset ($_GET['action']))
    {
    	if($_GET['action']=="afficher")
    	{
    		$ancelle_su->afficher();
    	}
    }		
     
     
    ?>
    Je travaille en local avec EasyPHP 1-7.

    j'appelle le tout en tapant : 127.0.0.1/traitement_ancelle_su.php?action=afficher

    et voici l'erreur que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Cannot redeclare class: noteorganisation in c:\program files\easyphp1-7\www\class_noteorganisation.inc.php on line 2
    ça fait 2 jours que j'y suis et j'ai tout essayé. J'ai même comparé avec des exemples trouvés sur internet et rien n'y fait!

    Si quelqu'un peut m'aider, je le remercie d'avance!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    En fait tu as déclaré deux fois class_noteorganisation.inc.php
    Enlève l'include fait dans traitement_ancelle_su.php, cela devrait rouler ensuite

    Ps : si tu ne comprends pas le problème je peux t'expliquer
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

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

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

    tu inclus deux fois ton fichier qui déclare la classe noteorganisation :
    une fois dans class_ancelle_su.inc.php et une fois dans traitement_ancelle_su.php. ce qui a pour effet au final de redéclarer la classe.

    une bonne habitude pour éviter ce genre de désagrément est d'utiliser include/require_once.
    Pourfendeur de singletons en croisade

  4. #4
    Nouveau membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par shadeoner
    En fait tu as déclaré deux fois class_noteorganisation.inc.php
    Enlève l'include fait dans traitement_ancelle_su.php, cela devrait rouler ensuite

    Ps : si tu ne comprends pas le problème je peux t'expliquer
    Ahhhhhhhhhhh la vache!!!!! j'avais pas vu!!!!!!!!! MERCI BEAUCOUP!!!!!!!!! et ça marche!!! Comme quoi!! c'est les erreurs les plus bêtes qui nous font galérer le plus longtemps!!

  5. #5
    Nouveau membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Petibidon
    hello,

    tu inclus deux fois ton fichier qui déclare la classe noteorganisation :
    une fois dans class_ancelle_su.inc.php et une fois dans traitement_ancelle_su.php. ce qui a pour effet au final de redéclarer la classe.

    une bonne habitude pour éviter ce genre de désagrément est d'utiliser include/require_once.
    include/require_once? je ne connais pas... mais je vais faire quelques recherches à ce sujet...

    Merci à toi aussi!

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    boujour le programmeurfou , tu te debrouille avec l'héritage en php ?

    j'ai des problèmes aussi peut-me contacter via mp?

  7. #7
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par leprogrammeurfou
    include/require_once? je ne connais pas... mais je vais faire quelques recherches à ce sujet...

    Merci à toi aussi!
    include/require_once t'éviteront d'avoir des erreurs du type "cannot redeclare class....function etc...)

    Tu as aussi toute une série de fonctions telles que class_exists(), function_exists() etc.. qui te permettent de savoir si une classe ou une fonction sont actuellement connues par ton script PHP.

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

Discussions similaires

  1. [EDI] Quel est l'éditeur que vous recommandez pour PHP ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 400
    Dernier message: 10/04/2018, 20h08
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. L'avenir est-il au PHP ?
    Par Manolo dans le forum Langage
    Réponses: 468
    Dernier message: 11/02/2008, 18h54

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