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

Langage PHP Discussion :

[POO] Avantages de la programmation orientée objet en PHP 5 [Débat]


Sujet :

Langage PHP

  1. #61
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par code34 Voir le message

    Perso, j'espère que PHP tira une croix définitivement sur l'impératif, et typera plus fortement ses variables.

    Une raison simple: voir de plus en plus de code PHP dans les entreprises et sur les gros projets, et ne plus trainer "cette réputation de langage pour les bidouilleurs".
    Ça existe déjà ce langage. Ça s'appelle Java. (quoique les jsp ...)
    Pourquoi impératif ? Ce qualificatif est restrictif de ce que l'on peut faire en Php. C'est la première fois que je le vois appliqué à Php.
    Quand à faire rentrer Php dans l'entreprise, c'est déjà fait. Aujourd'hui on en est à la phase industrialisation et je suis en plein dedans. Avec, comme tu le dis, le chalenge de faire de Php un langage professionnel reconnu. Ce qui n'implique en rien le fait de faire de la POO, mais, je le reconnais, l'objet et les fw ont une importance énorme dans le choix de Php (en concurrence avec Java) pour nombre de maitrises d'œuvre et de développeurs Java hostiles à l'aspect "bidouille" de Php.
    Pour ma part, je ne milite pas pour que Php devienne un Java like.

  2. #62
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    Citation Envoyé par jpsoft Voir le message
    Ça existe déjà ce langage. Ça s'appelle Java. (quoique les jsp ...)
    Pourquoi impératif ? Ce qualificatif est restrictif de ce que l'on peut faire en Php. C'est la première fois que je le vois appliqué à Php.
    Quand à faire rentrer Php dans l'entreprise, c'est déjà fait. Aujourd'hui on en est à la phase industrialisation et je suis en plein dedans. Avec, comme tu le dis, le chalenge de faire de Php un langage professionnel reconnu. Ce qui n'implique en rien le fait de faire de la POO, mais, je le reconnais, l'objet et les fw ont une importance énorme dans le choix de Php (en concurrence avec Java) pour nombre de maitrises d'œuvre et de développeurs Java hostiles à l'aspect "bidouille" de Php.
    Pour ma part, je ne milite pas pour que Php devienne un Java like.
    Parce que le PHP jusqu'à PHP5 s'était de l'impératif et pas vraiment de l'oo
    http://fr.wikipedia.org/wiki/Program...mp%C3%A9rative

    Il y a des langages de programmation qui convergent, s'est clairement du aux bonnes pratiques de programmation. L'orienté objet sans typage ça ne veut rien dire.
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  3. #63
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par code34 Voir le message
    Parce que le PHP jusqu'à PHP5 s'était de l'impératif et pas vraiment de l'oo
    http://fr.wikipedia.org/wiki/Program...mp%C3%A9rative

    Il y a des langages de programmation qui convergent, s'est clairement du aux bonnes pratiques de programmation. L'orienté objet sans typage ça ne veut rien dire.
    J'arrête. Ta devise n'est pas très adaptée à tes propos. Si Php ne veut rien dire pourquoi continues tu de l'utiliser? Java est fait pour toi.

  4. #64
    Membre habitué Avatar de ludosoft
    Homme Profil pro
    Chef de projet technique
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par code34 Voir le message
    [..]Perso, j'espère que PHP tira une croix définitivement sur l'impératif[..]
    Un peut de déclaratif pour changer alors ?
    http://pcaboche.developpez.com/artic.../presentation/

    Nan sérieux, typage fort ou pas la POO en PHP apporte énormément d'élégance dans le code.
    Ca a déjà été dit mais l'objet apporte aussi un gain énorme en "maintenabilité" pour les projets à tendance tentaculaire.
    J'ajouterais aussi que l'objet permet d'avoir tout de suite une vue globale d'un projet pour peu que l'on fasse un poil de modélisation (UML par ex.). Pour intégrer un petit nouveau à une équipe de dev ça facilite pas mal les choses
    Et un d'plus en moins !

  5. #65
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    Citation Envoyé par jpsoft Voir le message
    J'arrête. Ta devise n'est pas très adaptée à tes propos. Si Php ne veut rien dire pourquoi continues tu de l'utiliser? Java est fait pour toi.
    ?????????????? problème de lecture
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  6. #66
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    class job{
     
    public function doit(){
    echo("yes");
    }
     
    }
     
    job::doit();
    ?>
     
    affiche yes
    je confirme, il s'agit d'un bug j'ai ouvert un case
    http://bugs.php.net/bug.php?id=42955

    je vous invite à cliquer sur le lien vote en haut de la page pour que le bug soit réellement pris en compte.
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  7. #67
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    J'avais pas vu la réponse précédente sur le error_reporting :/
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  8. #68
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Je confirme sur plusieurs points.

    Je travaille sur un gros projet en PHP, et sans POO on se serait flingué.

    Maintenant soyons clair, la POO nous sert simplement à structurer notre code plus qu'à y apporter une quelconque robustesse. Le typage des données en PHP est effectivement catastrophique, et non pas que je veuille que le PHP soit un Java-like, mais effectivement un typage un peu plus sympa aiderait (ne serait-ce que pour la surchage, qui en terme de constructeurs à notre niveau nous pose énormément de problèmes, problèmes résolus uniquement par la bidouille et par des constructeurs statiques (comment on appelle ça déjà...?))

    Donc la POO clairement oui, mais encore à améliorer.
    Linio

  9. #69
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 486
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 486
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par Linio Voir le message
    Je confirme sur plusieurs points.

    Je travaille sur un gros projet en PHP, et sans POO on se serait flingué.

    Maintenant soyons clair, la POO nous sert simplement à structurer notre code plus qu'à y apporter une quelconque robustesse. Le typage des données en PHP est effectivement catastrophique, et non pas que je veuille que le PHP soit un Java-like, mais effectivement un typage un peu plus sympa aiderait (ne serait-ce que pour la surchage, qui en terme de constructeurs à notre niveau nous pose énormément de problèmes, problèmes résolus uniquement par la bidouille et par des constructeurs statiques (comment on appelle ça déjà...?))

    Donc la POO clairement oui, mais encore à améliorer.
    Tu résumes bien l'utilisation de l'objet dans le domaine de php. Il est nécéssaire que PHP ne deviennent pas un java-like. Il faut qu'il reste accessible et souple à la fois. Néanmoins, ça aurait été bien que dans les options de configuration nous puissions déterminer si nous souhaitons typé les variable ou non. Mais ceci serait trop compliqué point de vue moteur Zend.
    Il manque les surcharges qui serait la bienvenue.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  10. #70
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Le Java-Like permet quand même ce principe, il suffit de typer tout en object (du moins Java avant la version 1.5, même si c'est encore possible maintenant).

    Pour bosser sur un projet à plusieurs, je dois dire que le typage nous arrangerait quand même bien nous, ça éviterais des incompréhension d'utilisation de certaines fonctions.

    Dans l'expectative que ça change, je ne saurais trop que conseiller tout de même le recours à la POO pour la programmation de gros projet, au cas où
    Linio

  11. #71
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 486
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 486
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par Linio Voir le message
    Le Java-Like permet quand même ce principe, il suffit de typer tout en object (du moins Java avant la version 1.5, même si c'est encore possible maintenant).

    Pour bosser sur un projet à plusieurs, je dois dire que le typage nous arrangerait quand même bien nous, ça éviterais des incompréhension d'utilisation de certaines fonctions.

    Dans l'expectative que ça change, je ne saurais trop que conseiller tout de même le recours à la POO pour la programmation de gros projet, au cas où
    J'adopte, perso je travail qu'en POO pour mon projet et mes variables je force le typage ou du moin j'en controle le type primitif.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  12. #72
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    J'espère que PHP tiendra compte de ces remarques car de plus en plus de développeurs expérimentés php sont demandeurs d'un typage fort, et se désolent aussi des petits bugs des serveurs d'applications, des incohérences dans le nomage des fonctions etc ...

    Bref, il y a encore du boulot.
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  13. #73
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonsoir à tous... cette discution est très interressante mais j'ai l'impression (je vais me faire taper mais bon c'est pas grave) que vous n'expliquez pas assez ce qu'est l'objet...

    Comme beaucoup j'ai commencé par le procédural et est découvert un jour l'objet... au départ c'était juste une collection de fonction pour moi... mais après mon passage à l'iut (entre autre) j'ai vraiment compris l'utilité de l'objet et sa définition même...

    Il existe une méthode d'apprentissage (dont je ne me souviens plus le nom du gars qui l'a fait) qui explique l'objet et de façon simple...

    Prenons l'exemple d'un zoo. Un zoo est composé d'animaux

    Imaginons qu'un animal est un objet... on sait très bien que tous les animaux ont des fonctions générique à savoir manger, dormir, boire (par exemple)...
    Nous avons alors un objet Animal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Animal {
       function manger() {
          ....
       }
       function dormir() {
          ....
       }
       function boire() {
          ....
       }
    }
    Mais c'est un peu réducteur puisque certains animaux savent faire des choses spéciales... par exemple les oiseaux savent voler mais pas les chiens (ils aboient) en plus de boire, manger et dormir.

    Il est alors possible d'imaginer une hierrachie telle que :
    Animal -> Oiseaux
    Animal -> Chiens
    On obtient alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Chiens extend Animal {
       function aboyer() {
           ....
       }
    }
     
    class Oiseaux extend Animal {
       function voler() {
           ....
       }
    }
    On remarque que l'on ne redéfinis pas les action manger, boire, dormir puisque l'on hérite de l'animal...
    Il est possible alors de définir des action plus spécifique pour certains oiseaux par exemple... le perroquet sait parler mais pas le pigeon qui roucoule.

    Nous avons alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Perroquet extend Oiseaux {
       function parler() {
           ....
       }
    }
     
    class Pigeon extend Oiseaux {
       function roucouler() {
           ....
       }
    }
    et ainsi de suite...

    Il me semble que cet exemple explique et défini vraiment ce qu'est l'objet par essence...

    De même pour allez plus loin on peut imaginer que tous les animaux ne dorment pas de la même façon mais tous dorment !
    Nous pouvons alors définir une action dite "abstraite" dormir comme suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    class Animal {
       function manger() {
          ....
       }
       abstract function dormir() {
          ....
       }
       function boire() {
          ....
       }
    }
    class Chiens extend Animal {
       function aboyer() {
           ....
       }
       function dormir() {
          dormir coucher ;
       }
    }
     
    class Oiseaux extend Animal {
       function voler() {
           ....
       }
       function dormir() {
          dormir debout ;
       }
    }
    Voilà... il y a pleins de possibilité mais je trouve cette méthode d'apprentissage fort ludique et facile à assimilé... je vais retrouver le nom de la méthode (si quelqu'un le sait qu'il le dise !) et vous la communiquez...

  14. #74
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Je pense qu'on n'explique pas ce qu'est l'objet parce que ceux prenant part au débat doivent avoir un minimum de notions pour comprendre celui ci...
    Linio

  15. #75
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    Citation Envoyé par Linio Voir le message
    Je pense qu'on n'explique pas ce qu'est l'objet parce que ceux prenant part au débat doivent avoir un minimum de notions pour comprendre celui ci...
    c'est gratuit
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  16. #76
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    Par rapport à ce qui a été dis précédement l'héritage est une des notions importantes en objet, et il y aussi les interfaces, les concepts de visibilité
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  17. #77
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par code34 Voir le message
    Par rapport à ce qui a été dis précédement l'héritage est une des notions importantes en objet, et il y aussi les interfaces, les concepts de visibilité
    Je suis d'accord mais il me semble (peut-être ai-je mal lu) que le sujet de base demandé à quoi sert l'objet ? Et je n'ai vu nulle part une explication à peu près correcte... néanmoins comme tu le dis, l'objet ce n'est pas que l'héritage et je suis totalement d'accord, il y a les interfaces, le MVC, le factory...etc... mais avant de rentrer dans des concepts poussé il faut d'abord connaître la base non ?

  18. #78
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Certes, mais je pense que le débat tenait plus de l'intérêt d'utiliser cette nouvelle fonctionnalité qu'est l'objet (connue dans d'autres langages) en PHP qui, il faut le dire n'a pas vraiment pour lui un passé l'orientant vers un tel paradigme.

    Mais bon au lieu de tergiverser sur l'art du débat, autant en débattre. Les piqûres de rappel sont toujours bonnes à prendre quoiqu'il arrive .
    Linio

  19. #79
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    L'objet a révolutionné l'industrie du logiciel et le métier de développeur, qu'on le regrette ou non. Les arguments en faveur de son adoption valent aussi bien pour le PHP que pour tous les autres langages qui l'implémentent. Principalement une modélisation facilitée et formalisée (UML), un taux de réutilisation de code (notamment les fameux objets métiers) record et une maintenance plus aisée.

    La petite différence toutefois, c'est que son apparition dans PHP est relativement tardive et que beaucoup ont du mal à se départir de leurs réflexes procéduraux... L'implémentation "brouillon" de l'objet dans PHP4 ne les a pas non plus aidés en ce sens.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  20. #80
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    La POO est très intéressante et bien entendu les avantages sont aux rendez-vous.
    Seule reproche !!! c'est le passage de la procédurale au modèle objet qui ne se fais pas sans encombre.
    J'essaie de développez mes propres class afin de me faciliter la vie en ré-utilisant celle-ci dans plusieurs projet mais bien entendu les tutoriels, livres ne suffisent pas pour parfaire une compréhension optimal.
    Je suppose que plusieurs serons d'accord sur ce point
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

Discussions similaires

  1. [PHP 5.0] La programmation orientée objet en PHP
    Par RideKick dans le forum Langage
    Réponses: 12
    Dernier message: 28/06/2011, 18h01
  2. [MySQL] Programmation orienté objet en php 5
    Par dhbmedanis dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2011, 11h06
  3. Programmation orientée objet en PHP
    Par dekalima dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2011, 13h45
  4. Réponses: 26
    Dernier message: 12/10/2010, 07h28

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