Problem PHP acces aux objets

Résolu
fraichor Messages postés 11 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 31 mars 2010 - 15 juil. 2009 à 15:18
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009 - 19 juil. 2009 à 06:20
j ai un probleme bidon ! mon code n a aucune erreur mais la compilation ne donne pas le resultat attendu. un sauveur pourrait m expliquer pk "punch1" n est pas affiché. voici le code:
"echo $yan->moves[0]->name; ne donne rien"


<?php 
echo "hallo";

class move{
 var $name;
 var $speed;
 var $destroy;
 var $art;
 function move($n,$s,$d)
 {   
     $this->name=$n;
 $this->speed=$s;
 $this->destroy=$d;
 }
}

$mov=new move("punch1",6,3);
$mov2=new move("punch2",4,5);
$mov3=new move("punch3",2,7);
$mov4=new move("punch4",3,6);
$mov5=new move("punch5",8,4);
$mov6=new move("punch6",2,7);
$mov7=new move("punch7",5,6);
$mov8=new move("punch8",7,1);
$mov9=new move("punch9",4,4);
$mov10=new move("punch10",3,5);
$mov11=new move("punch11",7,5);
$mov12=new move("punch12",8,3);
$mov13=new move("punch13",7,7);
$mov14=new move("punch14",2,8);


//prise du lutteur
class finishmove extends move
{

var $ko;
var $submission;
var $taunt;
}
// prise de finition du lutteur
class superstar
{
 

 var $firstname;
 var $name;
 var $starname;
 var $weight;
 var $title;
 var $job;
 var $speed;
 var $charisma;
 var $resistance;
 var $defensiv;
 var $attack;
 var $handpower;
 var $footpower;
 var $moves;
 var $finishmoves;
 var $contract;
 var $fitness;
 var $money;
 var $prestige;

 function superstar($fn,$n,$sn){
      $this->firstname=$fn;
      $this->name=$n;
      $this->starname=$sn;
  $this->moves=array($mov,$mov2);
  
  
 }
}
$yan=new superstar("Yuri","Yagami","Vampire");
$yan2=new superstar("Billy","Kane","Devil");
$yan3=new superstar("Big","DIG","Baboo");
$yan4=new superstar("Bull","Pressu","Serum");
$yan5=new superstar("Randy","Bottom","Crazy");
$yan6=new superstar("Kantin","McDanan","Burgody");
$yan7=new superstar("Sod","Barezy","Terror");
$yan8=new superstar("Roger","Miller","Goal");
$yan9=new superstar("Chris","Oshi","Charism");
$yan10=new superstar("Leo","Bildanovan","Fairness");
$yan11=new superstar("Jack","Meyer","TheWinner");
$yan12=new superstar("Kuri","Marto","Hit");
$yan13=new superstar("Paul","zezerini","badboy");
$yan14=new superstar("Koro","wall","Soldier");
$yan15=new superstar("Nicki","Pry","lovy");

echo $yan->name;
echo $yan->moves[0]->name;

// le lutteur
class show
{
var $gm;
var $rooster;//les lutteurs du show
var $soiree;//les matchs du show
var $carte;//un des matchs du show constitués de 2 á 6 lutteurs
var $name;//nom du show
var $noteshow;//note du show enfin de l ensemble des shows
var $cartedujour;//meilleur carte du show


}


?> 




9 réponses

cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
19 juil. 2009 à 06:20
Cliques sur "réponse acceptée" stp. C'est pour aider les autres. ET c'est surtout dans le règlement du site
3
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
16 juil. 2009 à 18:52
Bonjour,

Ne faut-il pas d'abord déclarer avec var et en tant qu'un tableau le "moves[]" ?

Et autre question : Que vaut $mov et $mov2 au moment de l'initialisation de ce même tableau ?

Cordialement
0
fraichor Messages postés 11 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 31 mars 2010
16 juil. 2009 à 19:23
en ajoutant les [] a moves une erreur est produite :
Parse error: syntax error, unexpected '[', expecting ',' or ';' in
$mov et $mov2 sont des objets de la classe move crees plus haut.l objet superstar devrait avoir un nombre d objets move comme membre. alors je ve creer moves une table contenant ces objets de la classe move .
cool qu il y ait deja une reaction merci d avance
0
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
17 juil. 2009 à 05:37
Pour la déclaration en tant que tableau, je préconisais la syntaxe suivante :
<?php var moves = array(); ?>


Et pour le problème que tu rencontres, il semblerait que tu ne peux simplement pas avoir accès à une propriété d'une autre classe à partir d'une classe qui n'a aucun rapport avec la première. Pourquoi ne pas utiliser l'héritage de classe ?

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
17 juil. 2009 à 05:38
Je vais tester ce soir en rentrant du boulot. Si jusqu'ici, une autre personne ne t'a pas déjà donné la solution.
0
fraichor Messages postés 11 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 31 mars 2010
17 juil. 2009 à 13:43
Peut etre devrais je un peu plus expliquer. les deux classes importantes sont move et superstar. un objet superstar est sense avoir une liste d objets move par defaut ainsi j ajoute un membre $moves a la classe superstar ki est une table "array" contenant l ensemble des objets move qu a l objet superstar.
j attends ton test . ce forum est rentable grace a des gars comm toi
0
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
17 juil. 2009 à 19:54
Bonsoir,

Après quelques tests, ce que je disais plus tôt s'est confirmé. J'ai donc fait comme ceci. Et cela fonctionne comme voulu, je pense.

<?php 
class move{
 	var $name;
 	var $speed;
 	var $destroy;
 	function move($n,$s,$d) {   
     	$this->name=$n;
 	$this->speed=$s;
 	$this->destroy=$d;
 	}
}
/*
 * Les deux instances suivantes de la classe move
 * ne seront pas accessibles à l'intérieur de la classe superstar
 */
$mov=new move("punch1",6,3);
$mov2=new move("punch2",4,5);

class superstar {
   var $firstname;
   var $name;
   var $starname;
   var $moves = array();
   function superstar($fn,$n,$sn) {
      $this->firstname=$fn;
      $this->name=$n;
      $this->starname=$sn;
   }
}

$yan=new superstar("Yuri","Yagami","Vampire");
/*
 * On affecte donc le tableau moves directement ici
 */
$yan->moves[0] = $mov;
$yan->moves[1] = $mov2;

echo $yan->name.'
';
echo $yan->moves[0]->name.'
';
?>


Cordialement
0
fraichor Messages postés 11 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 31 mars 2010
18 juil. 2009 à 00:37
mille fois merci
s il m etait possible de t offrir une bier vive les forums. je continue donc dans cette lancee. des ke j ai un PB je fais signe.
nach mal Danke!
0
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
18 juil. 2009 à 05:55
De rien
0
Rejoignez-nous