Affichage d'une seule valeur ?

Eléphant du PHP | 226 Messages

02 sept. 2010, 11:28

Bonjour,

Dans l'apprentissage de la POO, j'écris une classe basique pour mieux en appréhender les principes et fonctionnements:
class personne {
 
    private $_nom;
    private $_job;
    private $_age;
 
    function __construct($nom, $job, $age) {
        $this->_nom = $nom;
        $this->_job = $job;
        $this->_age = $age;
    }
 
    public function getPersonne() {
        return $this->_nom;
        return $this->_job;
        return $this->_age;
    }
}
Dans un autre fichier:
$personne1 = new personne('yann', 'info', 36);
echo $personne1->getPersonne();
Et là, je n'ai que 'yann' qui s'affiche. Pourquoi ?
merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

ViPHP
ViPHP | 5462 Messages

02 sept. 2010, 12:06

y'a que le 1er return rencontrer qui retourne quelque chose, mais même dans la logique çà va pas tu t'attendait a quoi comme valeur de retour avec ton echo ? :wink:

Eléphant du PHP | 226 Messages

02 sept. 2010, 12:25

Je viens d'avoir la réponse sur un autre forum. return termine la fonction, en renvoyant une valeur. C'est pour cela que je ne pouvais voir les autres valeurs.
Il faudrait que j'écrive :
public function getPersonne() {
        return $this->_nom.' / '.$this->_job.' / '.$this->_age;
 } 
Merci pour la réponse,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphant du PHP | 74 Messages

26 sept. 2010, 08:00

Si j'ai bien compris ta classe n'est là que pour déclarer une personne donc le "getPersonne" est un peu inutile.

Tu peux donc surcharger __toString comme ça tu n'as pas besoin de la fonction getPersonne pour afficher les informations d'une personne.
function __toString() {
    return $this->_nom.' / '.$this->_job.' / '.$this->_age;
}
exemple d'utilisation :
$personne1 = new personne('yann', 'info', 36);
echo $personne1;