IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Êtes vous pour ou contre la redéfinition des opérateurs en PHP ?

Votants
8. Vous ne pouvez pas participer à ce sondage.
  • OUI !

    5 62,50%
  • NON !

    3 37,50%
  • Je sais pas ce que c'est !

    0 0%
Langage PHP Discussion :

[POO] Redéfinition des opérateurs en PHP ? Qu'en pensez vous ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    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 ?

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    La surcharge des opérateurs n'est pas possible pour l'instant en PHP 5 il me semble.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Oui mais dans le futur ca pourrait vraiment être un plus, ne trouvez-vous pas ?

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Personnellement je ne vois pas dans quel cas cela pourrait être utile. Un exemple ?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $complexe1 = new Complexe(5,6);
    $complexe2 = new Complexe(7,2);
    au lieu de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $complexe1->imaginaire + =$complexe2->imaginaire;
    $complexe1->reel + =$complexe2->reel;
    il suffirait de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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.

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bah dans un vrai environnement objet la redéfinition des opérateurs est quasiment indispensable effectivement.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 66
    Points : 64
    Points
    64
    Par défaut
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $complexe1 -> plus( $complexe2 )
    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 += $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 : 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 ?
    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
    ZCE & Mysql Certified Developper

  8. #8
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    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 : 356
    Points
    356
    Par défaut
    redéfinition n'est pas exactement le bon terme, on appelle ça une surcharge d'opérateur.

  9. #9
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    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é.

    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 ?

  10. #10
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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.

  11. #11
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    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 ?

Discussions similaires

  1. [POO] Récupérer des objets en PHP 4
    Par slyfer dans le forum Langage
    Réponses: 4
    Dernier message: 01/02/2007, 10h22
  2. [SQL] Utilisation des opérateurs SQL plutôt que PHP
    Par php_newbie dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/05/2006, 11h38
  3. [Librairies] Ajax et PHP, qu'en pensez-vous ?
    Par shadeoner dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 05/05/2006, 12h41
  4. [POO] faire des classes en php
    Par gromit83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 16h10
  5. redéfinition des opérateurs en C++
    Par apan dans le forum C++
    Réponses: 11
    Dernier message: 27/03/2006, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo