Résoudre le pb d'absence de surcharge de constructeur

Résoudre le pb d'absence de surcharge de constructeur - PHP - Programmation

Marsh Posté le 08-08-2005 à 00:25:12    

Bonjour, avez vous une/des techniques pour résoudre la surcharge, via le type des arguments sur le constructeur en php5 ?
Sur la doc php, il y a une petite technique :  

Code :
  1. function __construct ($type1 = null, $type2 = null) {
  2.    if ($type1 != null) {
  3.     // Constructeur de type1
  4.    } else if ($type2 != null) {
  5.      // Constructeur pour le type2
  6.    } else {
  7.      // Constructeur avec aucun type fourni
  8.    }
  9.   }


Bon, perso, je trouve pas ça génial, car le script peut quand même marcher, si on se trompe dans les types, et si il y a beaucoup de type possible différent sur le même constructeur, ça risque de donner ça :

Code :
  1. $b = new MyClass(null, null, null, null, null, null, $type5);


 
Si vous avez mieux...je suis preneur ;)


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

Marsh Posté le 08-08-2005 à 00:25:12   

Reply

Marsh Posté le 08-08-2005 à 09:20:58    

En fait, elle est nulle cette méthode, car ça signifie que quand on fait un new, on doit connaître le type de l'objet, et selon le type, faire le bon new via un switchou if... donc cette méthode est complètement out.
 
uhm.. et en utilisant gettype ? Quelqu'un a essayé ?  
 

Code :
  1. function __construct($obj) {
  2. $type = gettype($obj);
  3. switch($type) {
  4. case 'type1':
  5. // constructeur type1
  6. break;
  7. case 'type2':
  8. // constructeur type2
  9. break;
  10. defaut:
  11. // constructeur pas prévu
  12. throw new Exception("Constructeur non défini" );
  13. break;
  14. }
  15. }


Message édité par zapan666 le 08-08-2005 à 09:25:27

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

Marsh Posté le 08-08-2005 à 14:29:11    

non, mais up quoi  :o  
 
Personne ne s'est encore posé cette question (existencielle) ? :ouch:


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

Marsh Posté le 08-08-2005 à 14:57:11    

je me répond a mon topic alors...
 
bah, y'a mieux que getType : instance of (comme en java)
et op :  
 
http://php.bieffe.org/manual/en/la [...] s.type.php
 
donc, dans la fonction constructeur, suffit de faire un switch(ou if..) selon l'instance de la classe en paramètre.
http://www.zend.com/php5/articles/ [...] c=0&view=1


Message édité par zapan666 le 08-08-2005 à 15:07:47

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

Marsh Posté le 08-08-2005 à 16:38:20    

et pour parcourir tes arguments :
 
function __construct() {
    $numargs = func_num_args();
    $arg_list = func_get_args();
    if ($numargs>0) {
      for ($i = 0; $i < $numargs; $i++) {
        // ton traitement
      }
    }
}


Message édité par el_gaucho le 08-08-2005 à 16:38:58
Reply

Sujets relatifs:

Leave a Replay

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