A quand la surdéfinition de méthode d'une classe PHP 5 [Résolu]

Messages postés
48
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
23 avril 2006
- - Dernière réponse : Nifhell
Messages postés
48
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
23 avril 2006
- 27 mars 2006 à 21:49
Bonjou à tous,

Je souhaiterais savoir s'il est possible comme en C++ de surdéfinir le constructeur d'une classe en PHP?

D'apés mes essais de code, apparement non (j'ai toujours cette @[\^\#^`~\`!..ain d'erreur: Fatal error: Cannot redeclare... ) , mais peut être que dans de futur release de php5 cele sera possible (et je parle pas des bidouillages discutés dans ce forum; qui d'ailleurs confondent "surcharge" et "surdéfinition" d'une méthode.... http://www.phpcs.com/infomsg/SURCHARGE-METHODES-14_680116.aspx,
http://www.phpcs.com/infomsg/OBJET-PHP5-SURDEFINITION-FONCTIONS-29_672301.aspx)

Qui a des infos?

Apparemment les moyens actuels proposés pour simuler une surdéfinition:
- C'est de faire un test sur le nombre d'argument passé au constructeur... oui mais si on fait des constructeurs avec des paramètres optionels??
- D'autre utilise la surcharge (et il s'agit là bien de surcharge) des constructeurs des parents de la classe, mais ça veut dire qu'il faut faire autant d'héritage que de constructeurs désirés... pas pratique...

A quand un vrai language orienté objet en PHP?

oOo__{NiFhElL}__oOo== Si parfois des gens paraisse brillant avant d'avoir l'air con c parce que la lumière va plus vite que le son....
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
3
Merci
Via la doc de php.net :



Even PHP 5 doesn't allow to redeclare a method in a class. So, it's
impossible to create differents constructors to a object with unique
parameters, something common JAVA.



Aucune redéclaration de méthode possible dans une classe à l'heure actuelle.

Si tu veux faire un truc dans le genre, il te faut utiliser func_get_args() pour pouvoir gérer un appel dynamique de ta méthode.



http://fr.php.net/manual/fr/language.oop5.decon.php#53838</code>    

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de FhX
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
3
Merci
C'est ce que fait Malalam dans les liens qu'a passé Nifhell :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Anthomicro
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
3
Merci
Hello,

l'objet n'était pas, à la base, une priorité de php. Ce qui est logique, PHP étant au départ destiné à n'être qu'un langage de script. Aux débuts de php, on avait pas les besoins que l'on peut aujourd'hui avoir, la technologie web n'étant pas, à l'époque, très développée.
PHP se transforme peu à peu en véritable langage orienté objet...mais bon, il faut se montrer patient :-) N'oublions pas que PHP se doit de rester PHP...les développeurs ne peuvent pas se permettre d'en faire un langage totalement nouveau, et doivent conserver un minimum de compatibilité ascendante.


Donc, ce sont bel et bien les deux seules méthodes possibles à l'heure actuelle.


Pour ta 1ère remarque, il suffit d'ajouter les tests qui vont bien dans tes surdéfinitions.
Ca reste du bidouillage, mais c'est toujours mieux que rien.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de malalam
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
3
Merci
"N'oublions pas que PHP se doit de rester PHP"

C'est mal parti, c'est comme les voitures : de plus en plus lourdes et de moins en moins performantes... lol

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Anthomicro
Messages postés
48
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
23 avril 2006
3
Merci
C'est vrai, mais regarde ce qu'est devenu le PERL (v5) aujourd'hui... c'est vrai qu'il présente quelques aberrations (ça s'écrit comme ça?) par rapport à un vrai langage objet (comme de systématiquement terminer ses packages par "1;", sinon y a une erreur LOL), mais ça marche et réussi à être orienté objet tout en gardant sa nature et sa facilité de programmation de langage "script". Je l'utilise souvent pour parser des logs, ou des CSV, et cela comme le ferai un script que je met en crontab mais en POO :p
Bon je ne sais pas si le PERL permet la surdéfinition lui aussi (je n'ai jamais eu besoin d'aller aussi loin), mais bon j'attends quand même bien plus du PHP, qui avec Zend (notemment avec l'intégration des web services), pousse à devenir enfin un langage de production de service "entreprise" et non plus un langage de "page perso" cantonné dans son coin.

Bref, bien, même trés bien PHP5, mais peut encore mieux faire...

==oOo__{NiFhElL}__oOo==
Si parfois des gens paraisse brillant avant d'avoir l'air con c parce que la lumière va plus vite que le son....

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Nifhell
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
2
Merci
Salut,

non ça n'existe pas encore (peut-être pour PHP6 ?) cependant la méthode de Malalam, bien qu'un peu lourde (mais c'est la seule "vraie" possibilité vu qu'on peut pas faire autrement) m'a l'air pas mal du tout ;-)

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Commenter la réponse de cs_Anthomicro