Class et extends

Class et extends - PHP - Programmation

Marsh Posté le 24-08-2007 à 09:54:52    

Salut,
 
Je fais des petits exos de class et j'aurai une question sur l'extends, en gros j'ai fait un systeme de commande vite fait, je passe deux commandes, nikel, j'aimerai ensuite avoir une class qui reprenne les commandes de l'autre pour en resortir le CA global de la commande.
 
QQun pourrait m'eclairer ?
 
 :jap:  
 

Code :
  1. <?php
  2. class commande
  3. {
  4.    var $produit;
  5.    var $prix_produit = 12;
  6.  
  7.    function __construct($nom_client)
  8.    {
  9.      $this->nom_client = $nom_client;
  10.    }
  11.  
  12.    function ajouter($nombre)
  13.    {
  14.      $this->produit[0] += $nombre;
  15.    }
  16.  
  17.    function prix()
  18.    {
  19.      return $this->produit[0]*$this->prix_produit;
  20.    }
  21.  
  22.    function afficher_commande()
  23.    {
  24.      echo 'Client : '.$this->nom_client;
  25.      echo '<br>Total commande : '.$this->prix();
  26.    }
  27. }
  28. class CA extends commande
  29. {
  30. function CA_global()
  31. {
  32.  echo '<br><br>CA global : '.$this->prix();
  33. }
  34. }
  35. $commande = new CA("Jacky" );
  36. $commande->ajouter(5);
  37. $commande->afficher_commande();
  38. echo '<br><br>';
  39. $commande2 = new CA("Maurice" );
  40. $commande2->ajouter(14);
  41. $commande2->afficher_commande();
  42. ?>


Message édité par nycius le 24-08-2007 à 09:55:19
Reply

Marsh Posté le 24-08-2007 à 09:54:52   

Reply

Marsh Posté le 24-08-2007 à 10:19:29    

Quel est ton problème exactement ? car tu ne dis pas ce qui ne marche pas.
Au premier coup d'oeil, il me semble qu'il faut créer un constructeur dans ta classe CA, qui appelle le constructeur de la classe mère.

Code :
  1. function CA($nom_client)
  2. {
  3.     $this->$nom_client($nom_client);
  4. }

Reply

Marsh Posté le 24-08-2007 à 10:23:22    

turinatas a écrit :

Quel est ton problème exactement ? car tu ne dis pas ce qui ne marche pas.
Au premier coup d'oeil, il me semble qu'il faut créer un constructeur dans ta classe CA, qui appelle le constructeur de la classe mère.

Code :
  1. function CA($nom_client)
  2. {
  3.     $this->$nom_client($nom_client);
  4. }



 
 
Désolé mais je vois toujours pas comment je peux appeler ma class CA et qu'elle reprendre le montant global de mes commandes passées
 
j'ai ajouter un constructeur dans ma class CA

Code :
  1. public function __construct($nom,$prix)   
  2.     {
  3.          parent::__construct($nom,$prix);
  4.     }

Reply

Marsh Posté le 24-08-2007 à 10:39:59    

Ah d'accord je n'avais pas compris ton problème.
Il faut que tu crée une variable de type static.
cette variable gardera sa valeur à chaque instance de ta classe, tu peux donc faire quelque chose de ce genre :

Code :
  1. static $montant_global = 0;
  2. function ajouter($nombre)
  3. {
  4.     parent::ajouter($nombre);
  5.     montant_global+= $nombre;
  6. }


 
Mais je ne vois pas trop l'intéret de faire de l'héritage, une seule classe suffirait je pense.

Reply

Marsh Posté le 24-08-2007 à 11:18:31    

Oui c'est ce que j'ai fait au final en fin de compte
 
Merci

Reply

Sujets relatifs:

Leave a Replay

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