Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe

Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Êtes vous pour ou contre la redéfinition des opérateurs en PHP ?
OUI ! 5 62,50%
NON ! 3 37,50%
Je sais pas ce que c'est ! 0 0%
Votants: 8. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Vieux 13/12/2007, 11h48   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
Par défaut [POO] Redéfinition des opérateurs en PHP ? Qu'en pensez vous ?

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 ?
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 11h50   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
La surcharge des opérateurs n'est pas possible pour l'instant en PHP 5 il me semble.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 11h51   #3
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
Oui mais dans le futur ca pourrait vraiment être un plus, ne trouvez-vous pas ?
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 12h01   #4
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Personnellement je ne vois pas dans quel cas cela pourrait être utile. Un exemple ?
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 12h30   #5
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
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.
Code :
1
2
$complexe1 = new Complexe(5,6);
$complexe2 = new Complexe(7,2);
au lieu de faire :
Code :
1
2
$complexe1->imaginaire + =$complexe2->imaginaire;
$complexe1->reel + =$complexe2->reel;
il suffirait de faire :
Code :
$complexe1 += $complexe2
l'opérateur += ayant été redéfini dans la classe complexe.

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.
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 13h03   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Bah dans un vrai environnement objet la redéfinition des opérateurs est quasiment indispensable effectivement.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 13h51   #7
Membre du Club
 
Inscription : octobre 2007
Messages : 66
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 66
Points : 49
Points : 49
Citation:
$complexe1 += $complexe2
l'opérateur += ayant été redéfini dans la classe complexe.
Donc tu ne redéfinis pas l'opérateur "+=", mais le comportement de ta classe "complexe" en interaction avec l'opérateur "+=".

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 :

Code :
$complexe1 -> plus( $complexe2 )
en quantité de code, le code est identique a quelques caractéres prés :

Code :
$complexe1 += $complexe2
( et le code de redefinition ne doit pas etre bien différent )

pour ce qui est de l'utilité de la "redefinition d'operateurs" ....

Code :
 ma question est de savoir si la redéfinition des opérateurs (+,-,*,/,=) pourrait être implémentée en php ?
Donc la réponse :
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
BobLunique est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 13h54   #8
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
redéfinition n'est pas exactement le bon terme, on appelle ça une surcharge d'opérateur.
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 08h38   #9
Nouveau Membre du Club
 
Développeur Web
Inscription : avril 2006
Messages : 37
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 37
Points : 37
Points : 37
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é.

Citation:
le but : écrire le moins de code possible.
Au détriment de la lisibilité lasdou15 ?
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 ?
Méthylbro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 09h45   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par Méthylbro Voir le message
Au détriment de la lisibilité lasdou15 ?
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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 10h13   #11
Nouveau Membre du Club
 
Développeur Web
Inscription : avril 2006
Messages : 37
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 37
Points : 37
Points : 37
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 ?
Méthylbro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h29.


 
 
 
 
Partenaires

Hébergement Web