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 :

[POO] Un Problème d'héritage?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut [POO] Un Problème d'héritage?
    Bonjour,

    J'ai un problème que je n'arrive pas à m'expliquer ni à débugguer parce que au lieu de m'afficher une erreur de code la page m'affiche une erreur navigateur qui n'a rien avoir.
    "La connexion avec le serveur a été réinitialisée pendant le chargement de la page.". "


    Donc je vous explique rapidement la struture

    J'ai 3 classes :Une de Personne, une autre de Acteur qui hérite de personne, et une dernière nommée Action.

    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
     
    Page 1 :
    class personne{
    var $blablabla
    }
     
    Page 2:
    class acteur extends personne{
    var $blablabla
    }
     
    Page 3:
    class action{
    var $blabla
     
    constructeur()
      $un_action=new acteur()
    }

    Donc dans la classe Action quand j'appelle le classe Acteur, j'ai une page d'erreur louche.

    Mais quand j'appelle la classe Personne à la place (new personne()) ou que j'enlève l'héritage à la classe Acteur (extends personne) le tout fonctionne ou m'affiche une erreur de code normal.

    La classe Acteur et toutes ses fonctions fonctionnent parfaitement quand on les appellent en dehos de la classe Action.
    Après tout mes tests j'ai déduit que le problème vient de l'héritage sans savoir pourquoi et surtout la raison d'une page d'erreur navigateur.

    Niveau config je suis sur Easyphp2 avec PHP5 (et l'adresse sur le navigateur est bon et il n'y a aucune redirection).

    Donc si quelqu'un a une idée je suis prenneur merci

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Il faudrait que tu donnes plutot un code utilisable parce que la ca me semble trop simplifié. As-tu bien inclus chaque fichier de classe? qu'est ce que la variable $un_action dans le constructeur de action?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut
    En fait $un_action c'est un objet de type acteur (en fait je me suis trompé c'est plutot "$this->un_action" que je voulais mettre). ET oui j'ai éffectué toute les inclusions en début de classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Page 3:
    include_once(class_acteur.php)
    class action{
    var $blabla
     
    constructeur()
     
    }
     
    function1{
    $this->un_action=new acteur()
    }
    En descendant le $this->un_action=new acteur() du constructeur à chaque fonction l'appli marche.

    En fait ce que je voudrais comprendre maintenant c'est dans quel genre de cas on peut avoir ce genre d'erreur (en dehors des pb de url et de redirection?)

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Je persiste (désolé) mais comme tu donnes trèspeu d'éléments sur la structeure de ton code je suis pas sur de pouvoir t'aider:
    c'est quoi ta variable un_action?? y a pas l'air (dans ton exemple en tout cas) d'y avoir une variable membre qui s'appelle comme ca, donc je vois pas comment tu peux faire $this->un_action pour mémoriser ton instance de acteur dans ton instance de la classe action.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut
    Les 3 fichiers sont dans le mm répertoire j'ai viré les initialisations de varaibles et méthodes que j'ai mis en commentaires pour débugguer

    classe session

    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
    <?php
    include_once("class_theme.php");
    include_once("class_ville.php");
    include_once("class_lieu_formation.php");
    include_once("class_animateur.php");
    class session {	
     
    	//Déclaration variables BDD (Session)
    	var $lieu_formation; //objet lieu de formation
    	var $theme; //Objet theme
    	var $formateur; //Objet personne
    	var $personne_pre; //Ojbet personne animateur
     
    	//Déclaration variables résultats de préinscription (ou tableau)
    	var $tab_session; //tableau de session
    	var $tab_preinscrits; //tableau de session
     
    	//Objet relation base de données
    	var $mysql;
     
    	//Constructeur
    	function session($mysql){
                    //initialsation variable
    		$this->mysql                       = $mysql;
    		$this->ville                          = new ville($mysql);
    		$this->theme                       = new theme($mysql);
    		$this->lieu_formation             = new lieu_formation($mysql);
                    $this->personne_pre             = new animateur($mysql);
     
    	}
    	}
    classe personne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    class personne {	
     
    	//Déclaration variables BDD
     
    	//Objet relation base de données
    	var $mysql; //Type MYSQL
     
    	//Constructeur
    	function personne($mysql){
             //Initialisation variable
    	}
    classe animateur
    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
    include_once("class_personne.php");
    include_once("class_organisme.php");
    include_once("class_session.php");
    class animateur extends personne {	
     
    	//Déclaration variables résultats (ou tableau)
    	var $organisme; //Objet d'organisme
    	var $session; //Objet de session
     
    	//Objet connexion BDD
    	var $mysql;
     
     
    	//Constructeur
    	function animateur($mysql){
    		//Récupération des champs de personne;
    		$this->personne($mysql);
    		$this->mysql     = $mysql;
    		$this->organisme = new organisme($mysql);
    		$this->session   = new session($mysql);
    	}

    Et enfin le fichier d'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?
    include($dir_classes.'class_fiche_sql.php');
    $mysql       = new sql($serveurbdd, $login, $pass, $base);
    include_once($dir_metier."class_session.php");
    $session = new session($mysql);
    $session->une_session($_GET["id"]);
    ?>

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Désolé je n'ai aucune idée de ce qu'est la méthode une_session(), ni $dirname, ni ce qui bugge donc je ne peux pas t'aider plus.
    Bon courage.

Discussions similaires

  1. [POO] Problème d'héritage "inversé"
    Par v4np13 dans le forum Langage
    Réponses: 7
    Dernier message: 01/10/2007, 01h25
  2. [Débutant] [POO] Problème d'héritage
    Par fire.stone dans le forum Langage
    Réponses: 3
    Dernier message: 30/09/2006, 23h21
  3. [AS2] Problème d'héritage
    Par wwave dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 27/01/2006, 09h26
  4. Problème d'héritage ?
    Par Romanops dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2005, 17h18
  5. Problème d'héritage d'une méthode protégée
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 28/04/2005, 23h17

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