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] Problème: public, protected et private PHP5


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 40
    Points
    40
    Par défaut [POO] Problème: public, protected et private PHP5
    Bonjour,

    J'ai résolu mon problème de classes en installant WAMP5. Pour ce point, sa va....
    Mais je constate que PHP ne digère pas du tout lorsque l'on déclare des attributs en public, private ou protected. Avez vous ce problème???

    Voic un exemple de code :
    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
     
     
    class Personne {
        public  $prenom;
        public $nom;
     
       function Personne($prenom, $nom) {
           $this->prenom = $prenom;
           $this->nom = $nom;
       }
     
       function info() {
           return "$this->prenom $this->nom";
       }
    }
     
    $corsaire1 = new Personne("Jean", "Bart");
    $corsaire2 = new Personne("", "Surcouff");
    echo $corsaire1->info();
    echo "<br>";
    echo $corsaire2->info();
    Le résultat après éxécution est le suivant:
    Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in C:\wamp\www\essai2.php on line 4

    La ligne 4 correspond à l'entrée de la classe.

    Par contre pour le même code avec les mêmes variables mais sans public:
    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
     
    class Personne {
        var  $prenom;
        var  $nom;
     
       function Personne($prenom, $nom) {
           $this->prenom = $prenom;
           $this->nom = $nom;
       }
     
       function info() {
           return "$this->prenom $this->nom";
       }
    }
     
    $corsaire1 = new Personne("Jean", "Bart");
    $corsaire2 = new Personne("", "Surcouff");
    echo $corsaire1->info();
    echo "<br>";
    echo $corsaire2->info();
    J'obtiens l'affichage suivant:
    Jean Bart
    Surcouff

    Qu'en pensez-vous??Pouvez faire des tests avec ce bout de code et faire un retour?

    J'utilise PHPEdit et je mets l'extension php5 pour les fichiers que j'éxecute.

    Merci

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Es-tu certaine d'avoir PHP5 avec ton WAMP ?
    PHPEdit utilise un débogueur PHP5 mais ce n'est pas l'exécutable PHP de ton serveur Web...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    je vais sur http://localhost et j'ai la version suivante de PHP: version 5.1.4

    Je n'y comprends plus rien!!!!

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Peux-tu essayer quelques-uns des exemples de cet article : Les nouveautés de PHP5 ?
    Ainsi, nous saurons si cela vient de ta configuration.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    Je te renvoie les résultats pour chaque éxécution de code

    1er exemple:

    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
     
    class dvpClass {
       function __construct() {
           echo 'Constructeur déclenché<br>';
       }
     
       function dvp_exemple(){
        echo 'Exemple Objet<br>';
       }
     
       function __destruct() {
           echo 'Destructeur déclenché';
       }
    }
    //A l'instanciation de la classe, le constructeur est automatiquement déclenché
    $obj = new dvpClass();
    //L'appel de cette méthode est le dernier endroit dans le script où l'objet $obj est référencé, après cet
    //appel, le destructeur sera automatiquement déclenché.
    $obj->dvp_exemple();
    Résultat: Exemple Objet
    mais pas destructeur déclenché???

    2ème exemple:

    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
     
    class dvpClassParent{
       function __construct(){
         echo 'Constructeur père déclenché<br>';
       }    
       function __destruct(){
         echo 'Destructeur père déclenché<br>';
       }
    }
     
    class dvpClassFille extends dvpClassParent {
       function __construct() {
           parent::__construct();        
           echo 'Constructeur fille déclenché<br>';
       }
     
       function dvp_exemple(){
        echo 'Exemple Objet<br>';
       }
     
       function __destruct() {
           echo 'Destructeur fille déclenché<br>';
           parent::__destruct();            
       }
    }
     
    $obj = new dvpClassFille();
    $obj->dvp_exemple();
    Résultat: Exemple Objet
    les autres chaines ne sont pas affichées.

    3ème exemple de code:

    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
     
    class ExempleMethodes {   
       public $propriete1;
       private $propriete2;
       protected $propriete3;
     
       function __construct(){
        $this->propriete1=1;
        $this->propriete2=2;
        $this->propriete3=3;
       }
     
       public function methode1(){
        echo 'méthode publique';
        $this->propriete2++;//autorisé car référencé au sein de la classe
        $this->propriete3++;//autorisé car référencé au sein de la classe
        $this->methode2();//autorisé car référencé au sein de la classe
        $this->methode3();//autorisé car référencé au sein de la classe
       }
       protected function methode2(){
        echo 'méthode protégée';
       }    
       private function methode3(){
        echo 'méthode privée';
       }
     
     
    }
     
    $obj = new ExempleMethodes();
    $obj->methode1();//autorisé
    echo $obj->propriete1; // autorisé
    echo $obj->propriete2; // non autorisé
    echo $obj->propriete3; // non autorisé
    $obj->methode2();//non autorisé
    $obj->methode3();//non autorisé
    Résultat: Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in C:\wamp\www\essai.php on line 3


    Au secours!!!!!!

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Mouais, ça ne ressemble pas du tout à du PHP5...
    Créé un fichier avec seulement ceci dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    phpinfo();
     
    ?>

Discussions similaires

  1. Différence entre public, protected et private
    Par pierrot10 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/05/2013, 09h46
  2. override de public à protected ou private
    Par gere34 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 26/11/2012, 14h13
  3. Héritage : private/public/protected
    Par le Daoud dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2007, 14h47
  4. Réponses: 16
    Dernier message: 31/05/2007, 00h07
  5. problème de private , public , protected
    Par florantine dans le forum C++
    Réponses: 3
    Dernier message: 17/01/2006, 21h51

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