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 :

Débugage en POO avec PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Points : 62
    Points
    62
    Par défaut Débugage en POO avec PHP
    Bonsoir !

    euh je commence a m'interesser un peu a la poo et a peine je commence et deja j'ai un probleme
    enfin ca vient ptet du php aussi, avec les vacances j'ai plus les idées tres fraiches -.-

    Code index.php : 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
     
    <html>
     
    	<head>
    		<title>POO<title>
    	</head>
     
    	<body>
     
    	<?php
     
    	require "essai.class.php" ;
     
    	$monMeuble = new MeubleTiroirBois() ;
    	$monMeuble2 = new MeubleTiroirBois() ;
     
    	$monMeuble->statut= "ouvert";
    	$monMeuble2->statut="fermé";	
     
    	$monMeuble->statutTiroir();
    	echo $result;
     
    	$monMeuble2->statutTiroir();
    	echo $monMeuble2->result;
    	?>
     
    	</body>
     
    </html>


    Code essai.class.php : 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
     
    <?php
     
    class MeubleTiroirBois
    		{
    		// définition des propriétées
    		public $matiereTiroir = "bois";
    		public $matiereStructure;
    		public $statut;
     
    		// définition des méthodes
    		public function statutTiroir()
    			{
    			if ($this->statut == "ouvert") 
    				{
    				$result = "le tiroir est ouvert";
    				} 
    			else if ($this->statut == "fermé") 
    				{
    				$result = "le tiroir est fermé";
    				}		
    			else
    				{
    				$result = "on ne connait pas le statut du tiroir";
    				}	
    			return $result ;
    			}
    		}
     
    ?>

    voila le probleme c'est que, ben ca m'affiche rien a l'arrivée.

    J'avoue resté quoi :X

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                 echo $monMeuble->statutTiroir();
    	echo $result; // a quoi sert cette variable???? à rien
    	
    	echo $monMeuble2->statutTiroir();
    	echo $monMeuble2->result; //tu n'as aucune propriété dans ta clase
    Dans ta classe,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // définition des propriétées
    		public $matiereTiroir = "bois";
    		public $matiereStructure;
    		public $statut;
                              private $result;
    
    		...
    if (....)
    this->result = "ta valeur";
    ....
    return this->result;
    De plus ta classe est très mal écrite.

    il faut éviter le propriétés public.
    Il vaudrait mieux utiliser de propriétés private et utilisé des méthode get et set.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $result est limitée a la fonction statustiroir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $monMeuble2->statutTiroir();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 275
    Points : 15 591
    Points
    15 591
    Par défaut
    la méthode "statutTiroir" retourne le résultat donc pour l'afficher fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	echo $monMeuble->statutTiroir() . '<br/>';
    	echo $monMeuble2->statutTiroir() . '<br/>';

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Points : 62
    Points
    62
    Par défaut
    Merci a tous!

    oui donc c'est bien mon php qui est rouillé (enfin les fonctions )

    au sujet de :

    Code Mygale1978 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     private $result;
     
    		...
    if (....)
    this->result = "ta valeur";
    ....
    return this->result;

    Quel est l'interet par rapport a $result dans la methode?
    utilisation dans d'autres methode de la classe peut etre?
    d'autre interet?

    Pour public private et protected comme je debute tout juste la poo j'ai pas encore vu ca de pres. (je sais que ca restreint la visibilité mais j'ai pas encore pratiqué donc je me limite a public pour le moment comme si ct des var ).

    quant aux methodes get et set alors la je sais pas du tout ce que c'est !

    merci d'etre si reactif !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je te conseille de regarder les cours basé sur la programmation orienté objet et ce n'est pas ce qui manque sur ce site.

    Il est d'ailleurs utile d'acquérir les bonnes pratiques dès le départ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private $result; // cette propriété aura une visibilité limitée à la classe et à ses méthodes.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Points : 62
    Points
    62
    Par défaut
    Merci je sais ce que signifie private mygale

    je te demandais juste l'interet du $result en proprietee par rapport au $result dans la method qui du coup est locale aussi donc non accessible de l'exterieur.

    Sinon pour les cours, j'ai eut du mal avec pas mal d'entre eux soit parce que ils illustrent les cas avec d'autres langages de prog que je connais pas soit parce que ca suppose qu'on ait deja des bases, bref je me suis replié sur de petits tutos php+poo et je test en meme temps

    mais je trouve que commencer la poo en ne connaissant que php n'est pas extrement accessible sur le net, il y'a cependant des petits tuto sympa mais vraiement pas exhaustif et c'est un vrai puzzle pour tout recouper !

    enfin je m'en sort t'en fais pas , sinon pour get et set t'as pas un petit exemple illustratif je suis curieux

  8. #8
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par eilijah Voir le message
    enfin je m'en sort t'en fais pas , sinon pour get et set t'as pas un petit exemple illustratif je suis curieux
    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
    <?php
     class MeubleTiroirBois
    {
        // définition des propriétées
        protected $matiereTiroir;
     
        // définition des méthodes
        public function getMatiere()
        {
            return $this->matiereTiroir;
        }
     
        // définition des méthodes
        public function setMatiere($matiere)
        {
            $this->matiereTiroir = $matiere;
        }
    }
    L'intérêt de faire ça, c'est que cela te permet de contrôler la lecture et l'écriture de tes propriétés, et donc conserver un objet cohérent. Un exemple bidon, tout mettre en minuscules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        // définition des méthodes
        public function setMatiere($matiere)
        {
            $this->matiereTiroir = strtolower($matiere);
        }

  9. #9
    Invité
    Invité(e)
    Par défaut
    Salut,

    Sinon pour les cours, j'ai eut du mal avec pas mal d'entre eux soit parce que ils illustrent les cas avec d'autres langages de prog que je connais pas soit parce que ca suppose qu'on ait deja des bases, bref je me suis replié sur de petits tutos php+poo et je test en meme temps

    mais je trouve que commencer la poo en ne connaissant que php n'est pas extrement accessible sur le net, il y'a cependant des petits tuto sympa mais vraiement pas exhaustif et c'est un vrai puzzle pour tout recouper !
    tu peux déjà commencer par jeter un oeil sur la doc officielle sur le site de php.net.

    tu auras un aperçu de ce qui peut-être fait au niveau programmation objet en php et tu as même une série d'exemple.

    http://be.php.net/manual/fr/language.oop.php (PHP4)
    http://be.php.net/manual/fr/language.oop5.php (PHP5)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Points : 62
    Points
    62
    Par défaut
    Merci vous deux!
    là je me sens tres bete

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

Discussions similaires

  1. Utilisez vous la POO avec php
    Par debian21 dans le forum Langage
    Réponses: 27
    Dernier message: 15/05/2013, 23h09
  2. [PHP 5.3] quelques points flous sur la POO avec PHP
    Par ikuzar dans le forum Langage
    Réponses: 1
    Dernier message: 19/09/2012, 14h23
  3. [MySQL] Fuite de mémoire en POO avec PHP 5.2
    Par aphax dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 23/06/2011, 14h33
  4. [POO] POO avec Php 5
    Par deboll_s dans le forum Langage
    Réponses: 1
    Dernier message: 15/01/2007, 12h58
  5. [POO] Souci POO avec php 4
    Par naunau dans le forum Langage
    Réponses: 7
    Dernier message: 12/12/2006, 13h23

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