Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
795 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  passage d'aguments en PHP ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage d'aguments en PHP ??

n°1383945
stagiux
Posté le 08-06-2006 à 17:09:19  profilanswer
 

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. ?>


 

mood
Publicité
Posté le 08-06-2006 à 17:09:19  profilanswer
 

n°1383946
rufo
Pas me confondre avec Lycos!
Posté le 08-06-2006 à 17:11:01  profilanswer
 

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

n°1383956
nargy
Posté le 08-06-2006 à 17:20:46  profilanswer
 

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.

n°1383958
stagiux
Posté le 08-06-2006 à 17:22:25  profilanswer
 

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

n°1383962
nargy
Posté le 08-06-2006 à 17:23:58  profilanswer
 

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

n°1384377
stagiux
Posté le 09-06-2006 à 11:37:51  profilanswer
 

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 ?
 
 
 

n°1384383
zapan666
Tout est relatif
Posté le 09-06-2006 à 11:41:29  profilanswer
 

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 !
n°1384389
stagiux
Posté le 09-06-2006 à 11:46:07  profilanswer
 

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

n°1384394
zapan666
Tout est relatif
Posté le 09-06-2006 à 11:49:53  profilanswer
 

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


---------------
my flick r - Just Tab it !
n°1384416
stagiux
Posté le 09-06-2006 à 12:15:39  profilanswer
 

et coment appeler la classe parente ?

mood
Publicité
Posté le 09-06-2006 à 12:15:39  profilanswer
 

n°1384421
zapan666
Tout est relatif
Posté le 09-06-2006 à 12:21:49  profilanswer
 

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


(PHP5)


---------------
my flick r - Just Tab it !
n°1384459
stagiux
Posté le 09-06-2006 à 13:46:58  profilanswer
 

:jap: merci bien !

n°1384482
stagiux
Posté le 09-06-2006 à 13:59:42  profilanswer
 

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. ?>

n°1384485
stagiux
Posté le 09-06-2006 à 14:00:17  profilanswer
 

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

n°1384586
stagiux
Posté le 09-06-2006 à 15:02:13  profilanswer
 

up

n°1384595
zapan666
Tout est relatif
Posté le 09-06-2006 à 15:11:04  profilanswer
 

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 !
n°1384617
stagiux
Posté le 09-06-2006 à 15:28:44  profilanswer
 

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
n°1384629
zapan666
Tout est relatif
Posté le 09-06-2006 à 15:37:01  profilanswer
 

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 !
n°1384648
stagiux
Posté le 09-06-2006 à 15:41:51  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  passage d'aguments en PHP ??

 

Sujets relatifs
Différence d'affichage de date entre ASP et PHP via SQLServer[PHP/SQL] Problème compteur
[PHP/MySQL] Ne pas reprendre deux fois la même valeur[ PHP || javascript ] le plus securisé
[PHP 5] pb pour activer mySql[PHP] Lire les données d'un tableau
[PHP] probleme avec commande includePetit soucis PHP et formulaires
Passage d'un string vers un int.... ou comment savoir si c possibleJS/PHP comment récupérer la valeur d'une case de tableau?
Plus de sujets relatifs à : passage d'aguments en PHP ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR