Bonjour,
je suis dévelloppeur PHP, j'aime bien travailler en programmation orientée objet, et ma question est de savoir si la redéfinition des opérateurs (+,-,*,/,=) pourrait être implémentée en php ?
Qu'en pensez vous ?
OUI !
NON !
Je sais pas ce que c'est !
Bonjour,
je suis dévelloppeur PHP, j'aime bien travailler en programmation orientée objet, et ma question est de savoir si la redéfinition des opérateurs (+,-,*,/,=) pourrait être implémentée en php ?
Qu'en pensez vous ?
La surcharge des opérateurs n'est pas possible pour l'instant en PHP 5 il me semble.
Oui mais dans le futur ca pourrait vraiment être un plus, ne trouvez-vous pas ?
Personnellement je ne vois pas dans quel cas cela pourrait être utile. Un exemple ?
le but : écrire le moins de code possible.
une fois la redéfinitions des opérateurs fixées, l'utilisation d'un objet devient plus simple.
Prenon le cas de deux objet issus d'une classe représentant un nombre complexe.
au lieu de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $complexe1 = new Complexe(5,6); $complexe2 = new Complexe(7,2);
il suffirait de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $complexe1->imaginaire + =$complexe2->imaginaire; $complexe1->reel + =$complexe2->reel;
l'opérateur += ayant été redéfini dans la classe complexe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $complexe1 += $complexe2
Voir cours de emmanuel remy pour le C++ : http://pagesperso-orange.fr/emmanuel.../operateur.htm
En php ca servirait aussi.
un Objet reste un Objet ! ce qui est fait en C++ pourrait aussi se faire en PHP.
Bah dans un vrai environnement objet la redéfinition des opérateurs est quasiment indispensable effectivement.
Donc tu ne redéfinis pas l'opérateur "+=", mais le comportement de ta classe "complexe" en interaction avec l'opérateur "+=".$complexe1 += $complexe2
l'opérateur += ayant été redéfini dans la classe complexe.
On peux déja faire ça "sur certains opérateurs". ( redefinir le comportement d'une classe en fonction de son contexte d'utilisation )
Méthodes magiques PHP5, et interface ( ArrayAccess par exemple pour le comportement de l'objet utilisé en tant que tableau )
Et puis :
en quantité de code, le code est identique a quelques caractéres prés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $complexe1 -> plus( $complexe2 )
( et le code de redefinition ne doit pas etre bien différent )
Code : Sélectionner tout - Visualiser dans une fenêtre à part $complexe1 += $complexe2
pour ce qui est de l'utilité de la "redefinition d'operateurs" ....
Donc la réponse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ma question est de savoir si la redéfinition des opérateurs (+,-,*,/,=) pourrait être implémentée en php ?
Elle est déja implémentée, mais pas possible pour tous les opérateur.
Et l'utilité d'une telle fonctionnalité ormis le codage ( lisibilité )de code reste un sujet ouvert![]()
redéfinition n'est pas exactement le bon terme, on appelle ça une surcharge d'opérateur.
pour ma part ; je ne suis pas pour.
Je pense que cela est inutile ; et que cela poserais plus de problémes que cela n'en résoudrais.
De plus ; pour travailler avec des objets ; que ce soit pour du calcul, de l'assignation, de l'incrémentation, de la comparaison, de la logique ou quoi que ce soit d'autre ... utiliser une méthode, ce n'est pas la même chose ?
je veux dire ... $a + $b ; ca reviens au même que $a->ajouter_a($b) non ?
donc la surchage d'opérateurs ; je n'en vois pas l'utilité.
Au détriment de la lisibilité lasdou15 ?le but : écrire le moins de code possible.
Ecrire moins de code en surchargeant les opérateurs ; c'est devoir écrire plus de commentaires pour expliquer ce que l'on fait ...
On y gagne vraiment ? Tu en est sur ?
Oui on y gagne beaucoup dans la clarté d'un code, l'exemple donné sur les complexes était très bien choisi et s'applique à pas mal de cas. Cette méthode existe dans plusieurs autres langages orientés objets et je pense qu'il sera utile de l'implémenter en PHP meme s'il y a pour l'instant des choses plus urgentes.
Je suis septique. Sans doutes parce que c'est quelque chose que je ne connais pas.
Est-ce que cela coûte en ressources ?
Comment cela-ce traduirait-il en termes de code de surcharger un opérateur ? Par des méthodes magiques par exemple ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager