Problem PHP acces aux objets

[Résolu]
Signaler
Messages postés
11
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009
-
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

Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

Cliques sur "réponse acceptée" stp. C'est pour aider les autres. ET c'est surtout dans le règlement du site
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

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
Messages postés
11
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
31 mars 2010

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
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

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
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

Je vais tester ce soir en rentrant du boulot. Si jusqu'ici, une autre personne ne t'a pas déjà donné la solution.
Messages postés
11
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
31 mars 2010

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
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

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
Messages postés
11
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
31 mars 2010

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!
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

De rien