Page 1 sur 1

constructeur

Posté : 22 juil. 2009, 20:01
par Superpilou
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.

Posté : 22 juil. 2009, 20:58
par albat
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "PHP orienté Objet".

Posté : 22 juil. 2009, 21:12
par orgerix
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) {

Posté : 22 juil. 2009, 21:12
par Sékiltoyai
Mmmmh.

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

Posté : 22 juil. 2009, 22:57
par Superpilou
En fait j'ai mis des valeurs "" pour dire qu'elles sont nulles dans l'objet.
Ainsi j'utilise qu'un constructeur.

Posté : 22 juil. 2009, 23:10
par Sékiltoyai
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.

Posté : 23 juil. 2009, 09:59
par narcisse
Ce qui est normal puisque c'est un langage à typage faible ...

Posté : 23 juil. 2009, 10:49
par micetf
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

Posté : 23 juil. 2009, 19:05
par Sékiltoyai
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.