8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,
je cherche actuellement à appeler un constructeur en php5 avec des parametres optionnels. J'aimerais faire :

$newPara= new Paragraphes($chapId.'_para'.$val,$chapId,,,,,,,,,,$val);


sachant que mon constructeur est :

function paragraphes($leIDparagraphe='IDpara_defaut',$leChapitre_id='chapID_defaut',$leHpara=10,$lacelluleG='Contenu paragraphe cellule gauche',$largeurCelG=50,$hauteurCelG=10,$laClassCelluleG='classCellGauche',
				$lacelluleD='Contenu de la cellule droite du paragraphe',$largeurCelD=50,$hauteurCelD=10,$laClassCelluleD='classCellDroit',$laposition=0)


Seulement je rencontre une erreur !!
Quelqu'un pourait il m'aider ?

Merci d'avance à tous et Bonne année ( Smiley sweatdrop )
Modifié par pusse (15 Jan 2008 - 16:17)
Salut pusse Smiley cligne ,

ce serait plus simple avec le message d'erreur mais je suppose que cela vient du P majuscule dans new Paragraphes alors que la fonction est en minuscules : function paragraphes Smiley rolleyes ...
Modifié par Heyoan (15 Jan 2008 - 16:20)
je dois rendre une premiere version de mon projet sous peu, je ne peux donc pas me permettre de remettre l'erreur en place. Mais en gros cela viens des virgules qui se suivent.

L'erreur était du type
',' unexpected ...
oui ce n'est pas possible d'avoir des parametres optionnelles de vide puis d'autre de pleins apres.

tu dois t'arranger avec l'ordre de tes parametres pour que les obligatoires tombent en premiers. même si tu mets des valeurs par defaut si je me souviens bien il faut faire comme ça.
Modifié par CPascal (15 Jan 2008 - 16:53)
a écrit :
si je me souviens bien il faut faire comme ça


Quelqu'un pour me confirmer ce que dis CPascal ? Non pas que je doute de ses compétences, loin de moi cette idée, mais si on pouvait me le confirmer (2 avis valent mieux qu'un Smiley langue ).

En tous cas merci CPascal pour ta réponse.
Modifié par pusse (15 Jan 2008 - 16:57)
ce n'est que re moi. je rajoute ça comme lien depuis le manuel de www.php.net.

je savais que j'avais lu ça vers les histoires d'arguments par defauts

a écrit :
Il est à noter que si vous utilisez des arguments avec valeur par défaut avec d'autres sans valeur par défaut, les premiers doivent être placés à la suite de tous les paramètres sans valeur par défaut. Sinon, cela ne fonctionnera pas.


donc me semble que ça confirme mes souvenirs.

edit:maintenant je ne suis pas expert en programmation objet et je n'ai une exp que sur java pour la poo.
mais autant que je me souvienne (j'ai quand meme lu les fondements de l'objet en php) le polymorphisme est quand même poussé a l"extreme en php.
a écrit :

Surcharge de méthode
mixed __call ( string $name , array $arguments )
La méthode magique __call() permet la capture des appels à des méthodes inexistantes. De cette façon, __call() peut être utilisée pour implémenter un gestionnaire de méthodes défini par l'utilisateur qui dépend du nom de la méthode réellement appelée. Ceci est particulièrement pratique pour implémenter une classe proxy, par exemple. Les arguments qui sont passés à la fonction devront être définis dans un tableau via le paramètre $arguments. La valeur retournée par la méthode __call() sera retournée à la méthode appelante.




a priori (si je comprends bien ) toutes methodes peut être appelées avec n'importe quel type d'arguments si tu as defini une espece de fonction par defaut.

ça me laisse sceptique par contre pour ce qui est du debuggage... puique tu peux passer n'importe quoi php ne mouftera rien....

bref tous ça pour dire qu'il y a surement une solution a ton pb en poo. Je dis pas que c'est __call attention. c'est au plus une piste.

et pis la solution la plus simple n'est-il pas d'accepter les choses comme elles sont ? et de passer quelquechose comme null ou 'neffectuerien' a tes parametres.
Modifié par CPascal (15 Jan 2008 - 20:21)
a écrit :
et pis la solution la plus simple n'est-il pas d'accepter les choses comme elles sont ?


effectivement, je pense que cela est le mieux (et surtout le plus simple pour moi Smiley langue ). Si je veux lui passer des parametres obligatoires et bien je modifierai mon constructeur pour tous les mettre en premier.

Je pense donc que mon problème est résolu.

Merci en tous cas de ta reponse et bonne journée à toi (mais également aux autres Smiley smile )
Modifié par pusse (16 Jan 2008 - 09:21)