PHP5 et la POO : n'affiche rien et renvoie du vide !

PHP5 et la POO : n'affiche rien et renvoie du vide ! - PHP - Programmation

Marsh Posté le 07-03-2006 à 16:56:35    

(Re)Bonjour !
 
Je débute en POO avec PHP. Et je souhaite (tout simplement) afficher à l'aide de ma méthode publique.
Problème : il m'affiche rien... en tout cas, la variable est renvoyée comme vide.
 
Voici ma classe :
 

Code :
  1. <?php
  2. class Devis
  3. {
  4. private $num;
  5. //constructeur
  6. public function __contruct($numDevis)
  7. {
  8.  echo "<!--TEST CONSTRUCT : " . $numDevis . "-->"; // n'affiche rien !
  9.  $this->$num = $numDevis;
  10. }
  11. //test
  12. public function getNum()
  13. {
  14.  echo "<!--TEST : " . $this->num . "-->"; // affiche <!--TEST : -->
  15.  return $this->num;
  16. }
  17. }
  18. ?>


 
Et j'appelle dans mon fichier PHP :
 

Code :
  1. $leDevis = new Devis("test" );
  2. $prov =& $leDevis->getNum();
  3. // ou
  4. //$prov = $leDevis->getNum();


 
Y a-t-il une erreur de syntaxe ?? Dois-je reposer mon cerveau ?
Merci d'avance !

Reply

Marsh Posté le 07-03-2006 à 16:56:35   

Reply

Marsh Posté le 07-03-2006 à 17:05:47    

Dans ton constructeur, c'est $this->num = $numDevis, il y a pas de $ devant num


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-03-2006 à 17:08:36    

Je crois qu'il est au courrant .. A voir le :
 // affiche <!--TEST : -->


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-03-2006 à 17:17:46    

ca n'existe pas $this->$num
 
c'est $this->num.


---------------
MZP est de retour
Reply

Marsh Posté le 07-03-2006 à 17:18:48    

Oui, déjà, j'ai fait une erreur sur le $num.
 
Mais, ça ne change rien... il ne m'affiche toujours pas ma balise "<!--TEST CONSTRUCT : " . $numDevis . "-->", comme si ça venait du paramètre qu'il ne veut pas passer au constructeur... et même comme s'il ne passait pas du tout par le constructeur.
 
Comprends pas.

Reply

Marsh Posté le 07-03-2006 à 17:22:15    

__construct

Reply

Marsh Posté le 07-03-2006 à 17:23:51    

aussi :D


---------------
MZP est de retour
Reply

Marsh Posté le 07-03-2006 à 17:29:03    

"__contruct" <> "__construct" (manque le "s" )
 
 
"$this->$num" <> "$this->num" ca ca a déjà été dit et corrigé
 
"$prov =& $leDevis->getNum();"
Il n'y a que des variables qu'on peut passer par "adresse". (deux variables ayant le même pointeur) Une valeur qui n'est pas contenu dans une variable ne peut être passé que par "valeur".
Dans le cas présent, seule une affectation par "valeur" est possible.
 
Voilà les trois erreurs de ton script initial.
 
 
Ouin, on m'a grilled.


Message édité par omega2 le 07-03-2006 à 17:31:28
Reply

Marsh Posté le 07-03-2006 à 17:29:03    

:cry: ok j'avoue, j'ai honte... je vais aller dormir un peu.
 
Evidemment, ça marche ! Comment perdre bêtement du temps !! lol
 
Merci, et encore désolé... :wahoo:

Reply

Marsh Posté le 07-03-2006 à 17:34:31    

(pour la 3ème erreur, omega2, c'était juste une étape intermédiaire juste pour tester et essayer de trouver une erreur -conStruct-... cette ligne n'a en effet pas lieux d'être. Merci !)

Reply

Marsh Posté le 07-03-2006 à 17:34:31   

Reply

Marsh Posté le 07-03-2006 à 17:41:55    

cinocks a écrit :

ca n'existe pas $this->$num
 
c'est $this->num.


 
$this->$num existe mais ne marche pas dans son cas ...
D'ailleur s'il faisait :
$num = 'num';
$this->$num  
ça marcherait tres bien (meme si c'est pas tres malin)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-03-2006 à 17:51:31    

esox_ch > Plus précisément, il faudrait dire que la syntaxe "$this->$num" est possible si on a déjà initalisé $num. Enfin, ca me semble plus clair dit comme ça.

Reply

Marsh Posté le 07-03-2006 à 17:56:04    

Bein qu'est-ce que j'ai fais dans mon script ? [:pingouino]


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-03-2006 à 17:58:43    

esox_ch > C'était le texte autour de ton exemple que j'ai trouvé dur à comprendre. :p Pas l'exemple en lui même.

Reply

Marsh Posté le 07-03-2006 à 18:05:09    

omega2 a écrit :

esox_ch > Plus précisément, il faudrait dire que la syntaxe "$this->$num" est possible si on a déjà initalisé $num. Enfin, ca me semble plus clair dit comme ça.


 
vu comme ça oui, mais l'interet :??:


---------------
MZP est de retour
Reply

Marsh Posté le 07-03-2006 à 18:54:55    

cinocks a écrit :

vu comme ça oui, mais l'interet :??:


 
Le meme que d'avoir la possiblité de faire des $$mavar  
 
=> Rendre le code totalement illisible par quiquonque , en incluant la personne qui l'a programmé


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-03-2006 à 19:02:05    

esox_ch a écrit :

Le meme que d'avoir la possiblité de faire des $$mavar  
 
=> Rendre le code totalement illisible par quiquonque , en incluant la personne qui l'a programmé


J'avais plustôt pensé aux ${var.$mavar} mais le "$this->$num" est exactement l'équivalent de ce que t'as indiqué.


Message édité par omega2 le 07-03-2006 à 19:02:32
Reply

Marsh Posté le 08-03-2006 à 08:15:06    

A oui c'est pas mal le truc des {} ... Je l'ai jamais utilisé dans mes scripts (alors que j'ai deja utilisé 1 ou 2 fois le coup du $$ ) ... Ce genre de truc c'est tellement casse-gueule qu'il faudrait bruler tout auteur de livre php qui en parle, si ce n'est pas le descendre en fleche


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed