[RESOLU] Variable privée dans une class orienté objet

Eléphanteau du PHP | 11 Messages

18 avr. 2019, 17:59

Bonjour à tous,

Je viens vers car j'ai un souci au niveau de mes variables.

Je crée une class Personne dans laquelle j'y ajoute une variable $prénom en private .

Class Personne {
private $nom ;
}

Je crée un New Personne :

$Julien= New personne() ;
$Julien->nom="Julien" ;


Ensuite j'essaie d'afficher l'objet $Julien de la sorte :

Écho $Julien->nom ;


La il m'indique que $nom est privé et que je n'y ai pas accès, rien d'anormal.

Le problème est que si je rajoute un underscore à $nom ( qui devient donc $_nom) et que je la laisse en privée, cette fois ci il me l'affiche alors que celle-ci est en privée.

Par avance, merci pour votre aide.

Mammouth du PHP | 2703 Messages

18 avr. 2019, 19:06

on peut avoir le code complet avec _ ?

Eléphanteau du PHP | 11 Messages

19 avr. 2019, 09:44

Le Voici, la variable nom est avec un underscore en privée et pourtant elle s'affiche ;


class Personne{
private $_nom;
private $prenom ;

public function setNom($nouveauNom){
$this-> nom = $nouveauNom ;
}
public function getNom(){
return $this-> nom ;
}

} ;



$Julien=new Personne () ;

$Julien->nom="Julien" ;
echo $Julien->nom ;



Voici le même à l'identique, j'ai juste enlever l'underscore à la variable nom :


class Personne{
private $nom;
private $prenom ;

public function setNom($nouveauNom){
$this-> nom = $nouveauNom ;
}
public function getNom(){
return $this-> nom ;
}

} ;






$Julien=new Personne () ;

$Julien->nom="Julien" ;
echo $Julien->nom ;



Et il m'indique que c'est privée et que je n'ai pas l'accès .

Mammouth du PHP | 1967 Messages

19 avr. 2019, 13:41

avec ce code ci
class Personne{
private $_nom;
private $prenom ;

public function setNom($nouveauNom){
$this->_nom = $nouveauNom ;
}
public function getNom(){
return $this->_nom ;
}

} ;



$Julien=new Personne () ;

$Julien->nom="Julien" ;//déclare une variable nom dans ta classe donc rien avoir avec _nom 
echo $Julien->nom ; 

$Julien->setNnom("Julien") ;
echo $Julien->_nom ;  //impossible => variable privée


Il faut rester cohérent avec ta nomenclature nom et _nom ce n'est pas la même chose.
de plus les variables privée doivent être remplie via le setter et non pas en direct
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 11 Messages

23 avr. 2019, 07:52

Merci à toi pour cette explication clair et précise :)