POO, question de débutant

WRInaute occasionnel
Bonjour,

Je suis en train d'apprendre à programmer en POO, du coup je repars un peu de zéro. J'ai justement téléchargé un tutoriel sur l'ex site du zéro, tuto qui ma foi a l'air bien fait.
Cela étant j'ai une question à vous poser, si vous le voulez bien.
Prenons le code suivant, for simple :

Code:
<?php
class Def
{
private $_titre='Ki Kong';
private $_MotClef='ki-kong';
public function afficheTitre() {echo $this->_MotClef;}
public function pluriel($mot) {echo''.$mot.'."s"';}
public function plurielTitre() {echo $this->_MotClef .'s';}
}

//on crée un nouvel objet à partir de la classe Definition.
$def= new Def();
$def->afficheTitre();
echo'<br>';
$def->plurielTitre();

?>

question :
1) Pourquoi ne puis-je pas récupérer en dehors de la classe la valeur de l'attribut $MotClef et lui appliquer la fonction pluriel() définie dans ladite classe ?
2) Si toutes les fonctions qui s'appliquent à l'objet doivent être définie dans la classe, comment fait-on pour modifier la valeur de l'attribut d'un objet en dehors de la classe ? Par exemple, en y appliquant la fonction pluriel() : $titrePluriel->afficheTitre($MotClef).

Merci d'avance
 
WRInaute occasionnel
Je vais répondre au deux question en même temps :)

Car ta variable est en private ;)
Tu pourrais en la mettant en public et faire echo $def->_MotClef;

Le mieux étant de ne pas mettre de valeur dans tes variables...

Code:
class Def {
public function pluriel($mot) { return $mot.'s'; }
}
echo (new Def)->pluriel('MOT');

ou et répond à ta question 2

Code:
class Def {
private $mot;
public function  __construct($mot='') {
if ($mot) $this->setMot($mot);
}
public function setMot($mot) { $this->mot = $mot; }
public function getMot($mot) { return $this->mot; }
public function pluriel() { return $this->mot.'s'; }
}
echo (new Def('MOT'))->pluriel();
//
$def = new Def():
$def->setMot('XX1'):
echo $def->getMot():
$def->setMot('XX2'):
echo $def->getMot():
Il y a mieux mais la logique est la ;)
 
WRInaute accro
Tu dois faire l'intégralité du tuto avant de te poser ces questions, c'est expliqué dans la leçon suivante ou celle d'après.
 
Discussions similaires
Haut