constructeur

Eléphant du PHP | 199 Messages

22 juil. 2009, 20:01

Bonjour.

Pour une même classe je voudrais déclarer deux constructeurs car l'un prendrai 5 arguments l'autre deux.
C'est possible ou pas?
Merci d'avance.
Modifié en dernier par Superpilou le 22 juil. 2009, 22:57, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

22 juil. 2009, 20:58

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "PHP orienté Objet".

Mammouth du PHP | 693 Messages

22 juil. 2009, 21:12

me semble pas que PHP support le polymorphisme.

En revanche, tu peux définir une valeur par défaut pour les paramètres.
function mafonction($a,$b,$c='bab',$d=NULL,$e=12) {

ViPHP
ViPHP | 5924 Messages

22 juil. 2009, 21:12

Mmmmh.

Un exemple ? :)
(j'ai compris ta question, mais il y a plusieurs manières d'y répondre :) )

Eléphant du PHP | 199 Messages

22 juil. 2009, 22:57

En fait j'ai mis des valeurs "" pour dire qu'elles sont nulles dans l'objet.
Ainsi j'utilise qu'un constructeur.

ViPHP
ViPHP | 5924 Messages

22 juil. 2009, 23:10

En fait j'ai mis des valeurs "" pour dire qu'elles sont nulles dans l'objet.
Ainsi j'utilise qu'un constructeur.
Oui, voilà. De toute façon t'as pas d'autre choix, car en effet le polymorphisme n'est pas possible en PHP.

Eléphant du PHP | 111 Messages

23 juil. 2009, 09:59

Ce qui est normal puisque c'est un langage à typage faible ...

Eléphant du PHP | 65 Messages

23 juil. 2009, 10:49

Peut-être une autre solution ?
<?php 
class Constructeur {

	private $nbreArguments = 0;
	private $listeArguments = "";
	
	function __construct()
	{
		$tab = func_get_args();
		$this->nbreArguments = count($tab);
		$this->listeArguments = implode(', ',$tab);
	}
	
	function getNbreArguments()
	{
		echo "<p>".$this->nbreArguments."</p>";
	}

	function getListeArguments()
	{
		echo "<p>".$this->listeArguments."</p>";
	}
}

echo "<h1>Instanciation avec deux arguments</h1>";
$test1 = new Constructeur("A","B");
$test1->getNbreArguments();
$test1->getListeArguments();

echo "<h1>Instanciation avec cinq arguments</h1>";
$test2 = new Constructeur("A","B","C","D","E");
$test2->getNbreArguments();
$test2->getListeArguments();
Fred

ViPHP
ViPHP | 5924 Messages

23 juil. 2009, 19:05

Ce qui est normal puisque c'est un langage à typage faible ...
Ca joue :)
Mais ils pourraient le faire pour les objets. Seul le typage des types primitifs est faible.
Peut-être une autre solution ?

Fred
Bien joué, j'ai complètement zappé cette solution.