Page 1 sur 1

blocage sur un exo

Posté : 10 sept. 2014, 18:08
par Invité
bonjour a tous sa fait 4 jour que je bloque sur un exo et j'aurais besoin d'aide en urgence (vie ou de mort lol) voici mes consignes :
Créez une classe appelée Cat.
Ajoutez deux propriétés publiques à cette classe : $isAlive (y stocker la valeur true) et $numLegs qui doit contenir le nombre 4.
Ajouter une propriété publique $name, qui obtient sa valeur par le biais du constructeur (allez... je vous aide : __construct ()).
Ajoutez une méthode publique appelée meow(), qui retourne la chaine "Meow meow".
Créez une instance de la classe Cat, qui se nomme "CodeCat".
Appelez la méthode meow() sur ce chat et affichez le résultat.
alors je voudrais savoirs si il y a des erreurs dans mon code et si il y en n'a les quels !?? voila le code que j'ai fait :
 <?php
          // Votre code ici
          class person {
           class cat ($isAlive,$numLegs,$name) { 
      public $isAlive = true;
      public $numLegs = 4;
      
      public $name ->'CodeCat';
       
      }
      public function __construct($name) {
          
             $name=>$this='CodeCat';
            
      }
      public function __Meow('Meow Meow') {
               echo "Meow Meow";
}
      public function __saluer() {
               echo "salut " . $name=>$name . " fin de la phrase.";
}

merci de votre aide

Re: blocage sur un exo

Posté : 11 sept. 2014, 15:03
par Nestecha
Euh ouais, y'a des erreurs.

Déjà, la syntaxe "__fonction()", c'est pour les fonctions magiques uniquement (comme __construct), pas pour les fonctions usuelles.

Ensuite ta fonction construct, on veut qu'elle obtienne sa valeur par le construct.

Donc il faut faire :
public function __construct($name) {
$this->name = $name;
}
Ensuite méthode public appelée meow(); qui retourne "Meow meow" :
public function meow() {
echo "Meow meow";
Pour crée l'instance, suffit d'écrire :
$CodeCat = new Cat('CodeCat');
Puis on appelle meow() avec cette instance :
$CodeCat->meow();

Re: blocage sur un exo

Posté : 11 sept. 2014, 15:11
par Nestecha
Petite coquille, meow() doit return 'Meow meow', et il faut faire echo $CodeCat->meow(); à la fin.

Re: blocage sur un exo

Posté : 11 sept. 2014, 15:21
par masska93300
merci beaucoup mais je pence que sur le site ou je boss il doit y avoir quelques soucis vu que j'entre le code que tu ma dit de faire
c'est a dire :

class Cat () {

public $isAlive = true;
public $numLegs = 4;

}
public function __construct($name) {
$this->$name = $name;
}

public function meow() {
echo "Meow meow";
}
$CodeCat = new Cat('CodeCat');

$CodeCat->meow();


et un message d'erreur apparait en me disant :

"Oups, merci de réessayer. Votre méthode 'meow()' ne retourne rien."

Re: blocage sur un exo

Posté : 11 sept. 2014, 15:44
par Nestecha
merci beaucoup mais je pence que sur le site ou je boss il doit y avoir quelques soucis vu que j'entre le code que tu ma dit de faire
c'est a dire :

class Cat () {

public $isAlive = true;
public $numLegs = 4;

}
public function __construct($name) {
$this->$name = $name;
}

public function meow() {
echo "Meow meow";
}
$CodeCat = new Cat('CodeCat');

$CodeCat->meow();


et un message d'erreur apparait en me disant :

"Oups, merci de réessayer. Votre méthode 'meow()' ne retourne rien."
Normal !

Déjà, " public function __construct($name) {
$this->$name = $name;
}" c'est faux,

C'est " public function __construct($name) {
$this->name = $name;
}

Ensuite, ta fonction meow c'est :

public function meow() {
echo "Meow meow";
}

Comme je viens de le dire, il faut la faire retourner une valeur, puis l'afficher ensuite. Donc :

public function meow() {
return "Meow meow";
}

Et ensuite écrire :

echo $CodeCat->meow();

Par contre il ne faut pas faire ça dans le même fichier que ta classe d'une part, et d'autre part tu dois créer une instance, un objet, de cette classe pour pouvoir l'utiliser.

C'est un peu comme si ta classe c'était le moule d'un gâteau, t'es bien obligé de faire un gâteau grâce à ce moule, de le "créer" pour pouvoir l'utiliser (en imaginant que ton gâteau ai la fonction "être mangé" ;)).

Donc il faut inclure ce fichier classe dans un autre fichier (index.php par exemple), et ensuite faire :

$CodeCat = new Cat('CodeCat') << 'CodeCat' ça va passer directement dans la fonction __construct et on a dit que le nom serait ce qu'on a mis en paramètre.

Et maintenant tu peux utiliser la fonction meow();, mais vu qu'elle retourne une valeur, tu dois afficher cette valeur.

Donc $CodeCat->meow(); n'affichera rien et sera simplement égal à "Meow meow", pour l'afficher faut faire echo $CodeCat->meow(); :)

Re: blocage sur un exo

Posté : 11 sept. 2014, 18:07
par masska93300
FRANCHEMENT T'ES MAGIC !! SA A MARCHER DU TONNERRE !! PUTAIN JTE JURE T'ES UN GENIS !!
JE PEUT QUE TE DIRE MERCI 1000 X !!!!