passage d'aguments en PHP ??

passage d'aguments en PHP ?? - PHP - Programmation

Marsh Posté le 08-06-2006 à 17:09:19    

Bonjour.
 
J'essai de me mettre au PHP5 et c'est pas simple !  
Pour l'exemple voici mon code :  
 

Code :
  1. <?
  2. class nombre
  3. {
  4. //Déclaration des variables
  5. public $nombre;
  6. private $variable2;
  7. public $result;
  8.   public function __construct()
  9.    {
  10.    $this->nombre;
  11.    $this->variable2='3';
  12.    $this->result;
  13.    }
  14.   public function calc()
  15. {
  16.   echo "$this->nombre <br>";
  17.   $this->result = ($this->nombre + $this->variable2);
  18.   //echo "$this->result";
  19. }
  20. }
  21. $nombre=new nombre(1,4,1)//-> ca ne passe pas a l'intanciation de la classe: pourquoi ?
  22. $nombre->calc();
  23. ?>


 

Reply

Marsh Posté le 08-06-2006 à 17:09:19   

Reply

Marsh Posté le 08-06-2006 à 17:11:01    

ben ton constructeur n'a pas de paramètres... :/

Reply

Marsh Posté le 08-06-2006 à 17:20:46    

Code :
  1. public function __construct($nombre, $variable2, $result)
  2.       {
  3.       $this->nombre=$nombre;
  4.       $this->variable2=$variable2;
  5.       $this->result=$result;
  6.       }


...ou un truc du genre... selon la signification de tes paramètres.

Reply

Marsh Posté le 08-06-2006 à 17:22:25    

bien vu, merci, j'avais tester toute les possibilité sauf celle la !!!
c'est un peu comme le C# je vois...

Reply

Marsh Posté le 08-06-2006 à 17:23:58    

C'est de la POO, programmation orientée objet, donc ça ressemble à d'autres languages POO.

Reply

Marsh Posté le 09-06-2006 à 11:37:51    

autre petite question :
dans le cadre de mes exemple un peu tout con...
 
 
 

Code :
  1. <?php
  2. $nombre=new nombre(4);
  3. echo "appel calc 1";
  4. $nombre->calc();
  5. $sounombre= new souclass();
  6. echo "<br><br>appel calc 2";
  7. $sounombre->calc();
  8. ?>


 
 
 
Ma classe :  
 

Code :
  1. <?
  2.    class nombre
  3. {
  4. //Déclaration des variables
  5. public $nombre;
  6. private $variable2;
  7. public $result;
  8.   public function __construct($nombre)
  9.    {
  10.    $this->nombre=$nombre;
  11.    $this->variable2='3';
  12.    $this->result;
  13.    }
  14.   public function calc()
  15. {
  16.   echo "<br> class principal <br>";
  17.   echo "<br><br><br>APPEL CLASS N°1 ;-)<br>";
  18.   echo "la variable nombre est : ";
  19.   echo "$this->nombre <br>";
  20.   echo "la variable \"variable2\" est : ";
  21.   echo "$this->variable2 <br>";
  22.   $this->result = ($this->nombre + $this->variable2);
  23.   echo "l'addition de ces variables est : ";
  24.   echo "$this->result";
  25. }
  26. }
  27. class souclass extends nombre
  28. {
  29.     var $resultat;
  30.   function calc()
  31.   {
  32.       echo "<br> sous class<br>";
  33.       if (empty ($this->result))
  34.       {echo "result vide";}
  35.      $resultat=$this->result;
  36.      $this->result=$resultat * 10;
  37.     echo "<br>La sous classe a été appelé. le resultat de traitement de celle ci est : $this->result";
  38.   }
  39. }
  40. ?>


 
 
En faite : je voudrai instancier $nombre en "nombre", $this->result après avoir appelé calc() est de 7,
mais quand j'essai d'appeler la sous classe, il remet $this-> result a 0.
meme en appelant de cette manière : $sounombre= new souclass($nombre); Dans ce cas, il devrait me garder en memoire le $this-> result mais la non :??:
 
quelq'un pour m'eclairer ?
 
 
 

Reply

Marsh Posté le 09-06-2006 à 11:41:29    

ta sous classe n'appel pas calc de la classe parente.
 
donc result = 0 dans ta sous classe dans la fonction calc


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 09-06-2006 à 11:46:07    

oui mais quand je fais  
$sounombre= new souclass($nombre);  
alors qu'au dessus j'ai  
$nombre=new nombre(4);
 
ca devrait etre gardé non ?

Reply

Marsh Posté le 09-06-2006 à 11:49:53    

Il n'y a pas de constructeur par recopie en php, enfin je crois pas, donc non


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 09-06-2006 à 12:15:39    

et coment appeler la classe parente ?

Reply

Marsh Posté le 09-06-2006 à 12:15:39   

Reply

Marsh Posté le 09-06-2006 à 12:21:49    

Code :
  1. parent::$variable;
  2. parent::fonction();


(PHP5)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 09-06-2006 à 13:46:58    

:jap: merci bien !

Reply

Marsh Posté le 09-06-2006 à 13:59:42    

arff...
j'arrive pas a le faire fonctionner ....

Code :
  1. <?
  2. //**************************************************************************************************************//
  3. ////////////////////////////////////////////////*********CLASSE*********//////////////////////////////////////////
  4. //**************************************************************************************************************//
  5.    class nombre
  6. {
  7. //Déclaration des variables
  8. public $nombre;
  9. private $variable2;
  10. public $result;
  11. public $resultat;
  12. //***********Constructeur******************//
  13.        public function __construct($nombre)
  14.      {
  15.        $this->nombre=$nombre;
  16.        $this->variable2='3';
  17.        $this->result;
  18.      }
  19. //**************Methode*****************//
  20.        public function calc()
  21.      {
  22.        echo "<br> class principal <br>";
  23.        echo "<br><br><br>APPEL CLASS N°1 ;-)<br>";
  24.        echo "la variable nombre est : ";
  25.        echo "$this->nombre <br>";
  26.        echo "la variable \"variable2\" est : ";
  27.        echo "$this->variable2 <br>";
  28.        $this->result = ($this->nombre + $this->variable2);
  29.        echo "l'addition de ces variables est : ";
  30.        echo "$this->result";
  31.        $resultat=$this->result;
  32.      }
  33. }
  34. //*************************************************************************************************************//
  35. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  36. //*************************************************************************************************************//
  37. //**************************************************************************************************************//
  38. /////////////////////////////////////////*********    SOUS - CLASSE   *********///////////////////////////////////
  39. //**************************************************************************************************************//
  40. class souclass extends nombre
  41. {
  42.     var $resultat;
  43.     var $newnombre;
  44.     var $newresultat;
  45.      public function __construct($newnombre)
  46.    {
  47.    $this->newnombre=$newnombre;
  48.    $this->resultat=parent::$resultat;
  49.    }
  50.   function calc()
  51.   {
  52.       echo "<br> sous class<br>";
  53.       if (empty ($this->newresultat))
  54.       {
  55.       echo "result vide";
  56.       }
  57.      $newresultat = ($this->resultat * 10);
  58.      echo "<br>La sous classe a été appelé. le resultat de traitement de celle ci est : $this->resultat";
  59.   }
  60. }
  61. ?>

Reply

Marsh Posté le 09-06-2006 à 14:00:17    

Fatal error: Access to undeclared static property: nombre::$resultat in C:\wamp\www\Exosimple\exoclass\test59class.php on line 57

Reply

Marsh Posté le 09-06-2006 à 15:02:13    

up

Reply

Marsh Posté le 09-06-2006 à 15:11:04    

Tu as deja fait de la POO ?
Parce que la, c'est pas ca du tout.
Tu n'a pas un probleme de syntaxe mais de logique :  
 
J'ai l'impression que tu veux faire un constructeur par recopie (en PHP je pense aue c'est une mauvaise idee...)

Code :
  1. $this->resultat=parent::$resultat;


Tu rechope la valeur du resultat du parent mais le parent n'a pas ete contruit ! Si tu veux recupere la valeur de ton obj $newnombre c'est en faisant $newnombre->resultat (si resultat est publique)
 
Bref, ca va pas ton truc

Message cité 1 fois
Message édité par zapan666 le 09-06-2006 à 15:11:24

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 09-06-2006 à 15:28:44    

zapan666 a écrit :

Tu as deja fait de la POO ?
Parce que la, c'est pas ca du tout.


Non je débute  :sweat:  
 
en faite le truc que je voudrai faire:  
 
je prend un nombre, je l'additione dans la fonction class1 avec une constante.
le resultat de cette addition, je le passe dans une deuxième classe pour le multiplier par 10.
 
Ca n'a absolument aucun interet, bien sur, mais c'est juste pour m'initier au passage de parametre...
 
dans ce cas peut tu m'expliciter ce qu'il faut faire ? merci bien.
 
PS: pas de  [:google] stp  j'en ai suffisemment manger crois moi !


Message édité par stagiux le 09-06-2006 à 15:29:08
Reply

Marsh Posté le 09-06-2006 à 15:37:01    

C'est quoi le liens entre tes deux classes ? aucun ? donc pas besoin de faire heriter l'une de l'autre...


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 09-06-2006 à 15:41:51    

bah la premiere classe contient le resultat de l'addition dans $resultat... je voudrai recuperer ca dans la sous classe pour multiplier ce resultat par 10.  
 
C'est bien a ce que serve des sous classe? a rajouter des methodes a une classe principale ?
 
edit :  
 

Citation :

Souvenez-vous, au début de ce tuto, je vous avais dit qu'on pouvait modifier une classe sans y toucher. He bien voilà, on y arrive. Cette chose est possible grâce à l'héritage : supposons que vous ayez téléchargé une classe sur internet, mais que vous voudriez lui rajouter une fonction...
La méthode la plus simple consiste à modifier la classe et à rajouter dedans les méthodes et attributs qui vous manque. Mais le problème de cette méthode est que si vous faites une boulette, vous devez retélécharger la classe...
 
Il y a un moyen d'éviter cela : l'héritage!


Message édité par stagiux le 09-06-2006 à 15:46:07
Reply

Sujets relatifs:

Leave a Replay

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