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 :

P.O.O. (class & constructeur) vs simple PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut P.O.O. (class & constructeur) vs simple PHP
    Bonjour,

    après des annees et des annees de programmation en PHP, je me suis jamais penché vers la POO. et la je me decide de m'y mettre mais j'avoue avoir enormement de mal!!
    j'ai suivi le superbe tuto http://jcrozier.developpez.com/tutor...design-classe/ et aussi http://jcrozier.developpez.com/tutor...rientee-objet/ mais je n'arrive pas trop a me rendre compte de ce que ca peut apporter.
    auriez vous svp des comparaisons et exemples concrets entre un code en simple PHP et en POO??

    en vous remerciant par avance
    Reda

  2. #2
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    En gros, la poo apporte:
    encapsulation, héritage, agrégation, polymorphisme

    Il faut absolument bien lire toute la doc sur l'oop de php:
    http://php.net/manual/en/language.oop5.php
    Pour chaque point abordé, faire des petits codes de démo/test.
    C'est la meilleur façon de s'imprégner de la philosophie oop de php et surtout l'occasion de trouver des idées d'utilisation (et au passage répondre à ta question).

    Ensuite, il faut étudier des codes existants (avec la doc sous la main). Par exemple étudier des composants des frameworks "classiques" (ZF, symfony etc).

    Ensuite il faut ne rien faire. Arrêter, dormir. Passer à autre chose. Arrêter php et la prog en général si possible.
    Ca finit toujours par payer quand on s'y remet

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    La POO en PHP n'est qu'une manière différente d'organiser et réfléchir son code.

    L'intérêt est de réfléchir chaque problème ou structure indépendamment, créer des briques qui répondent à ce problème, et les assembler ensuite au niveau procédural.
    Ça demande un petit boulot au départ, pour définir les différentes classes, mais ça allège ensuite énormément le code procédural (du moins si les classes ont été pensées correctement)
    Au début ça parait un peu compliqué, la programmation est plus "théorique". Pas question de taper deux lignes et voir ce que ça donne. Une fois l'habitude prise, ça roule tout seul.

    Un exemple simple pour débuter et définir une classe : A partir du moment ou tu as un tableau associatif, tu as une classe en puissance. A partir du moment ou tu appliques une fonction sur un élément de ce tableau associatif, tu as une méthode objet. Réfléchir à comment tu vas transformer ce tableau associatif en classe pour ne plus à utiliser la moindre vérification/transformation au niveau procédural est un premier pas vers la POO.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    merci les gars pour vos reponses...
    je me me mettre a la lecture, et j'espere ne pas trop m'embrouiller avec ce nouveau concept!!!

    A tres bientot

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bon, je pense que je ne suis pas fait pour la programmation oop!!
    j'ai lu et essaye de comprendre les exemples sur http://www.php.net/manual/fr/language.oop5.basic.php mais rien a faire. c'est surtout que je ne realise pas encore en quoi ca peut m'etre utile. j'aurais bien aime par exemple de voire un script en PHP normal, et son equivalent en oop pour mieux comprendre... en auriez vous des liens??

  6. #6
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    Citation Envoyé par redah75 Voir le message
    c'est surtout que je ne realise pas encore en quoi ca peut m'etre utile.
    Je suis exactement dans le meme cas !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    Je suis exactement dans le meme cas !
    hehe, content d'avoir un partenaire

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Moi je suis juste un stade au dessus du votre.

    C'est à dire que j'ai compris la puissance de la POO mais je n'arrive pas à savoir comment découper mon application pour en profiter au mieu.

    La POO a comme principal intérêt d'après moi de pouvoir réutiliser des class d'autres personnes comme les framework, les système de template, Librairie GOOGLE, MVC, ect ... tout le monde parle en POO dès qu'il s'agit de s'envoyer des scripts. Cela s'explique par le fait que l'on peux utiliser la class sans même savoir ce qu'il ont fait dedans.

    Je trouve aussi que le code est beaucoup mieux ranger même si j'ai l'impression qu'il faut écrire trois fois plus de code pour le même résultat. Je pense donc qu'il faut utiliser la POO que pour des gros projets (CMS, e-commerce, CRM, site communautaire, ...) ou des projet qui vont être amener à évoluer dans le temps.

    Moi je cherche un cours permettant de savoir comment bien construire ces classe car tous le monde dit que la POO c'est puissant quand les classe sont bien structuré ? Comment faire ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    perso, j'ai abandonner la POO, je saturais!! j'espere ne pas regretter par la suite

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    je vous conseille plus que fortement de vous (re)mettre à la POO...
    l'avantage non négligeable d'une classe contrairement à un script aux fonctionnalités équivalentes est qu'elle est théoriquement (si elle est bien écrite) réutilisable dans d'autres contextes...

    imaginons que vous ayez à écrire un convertisseur CSV -> HTML... nickel! un script suffit.
    maintenant, on vous demande un convertisseur CSV -> XML... vous allez devoir réécrire un script ? et ainsi de suite...

    avec une bonne conception POO, vous aurez une classe de base qui reprend tous les services communs aux conversions de formats, et vous pourrez la réutiliser dans n'importe quel contexte (CSV -> or brut )...

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Merci Rolf-IV pour ta reponse et le conseil

    j'ai passe presque une journee a essayer de comprendre le fonctionnement de la POO mais rien y faire! au moment où je me dis que c'est bon, j'ai bien pigé, l'exemple suivant me demoralise parce qu'il y a (pour moi) une sorte de contradiction entre differents exemples et ceci casse tout!!

    en prenant l'exemple des conversion. moi je le ferai avec une fonction qui prend comment parametre le type de conversion a effectuer...

  12. #12
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Je recommanderai sans modération d'étudier des codes existants (de bonne qualité). Pour ça il suffit de se rendre sur les sites de "grands" frameworks et de parcourir/télécharger/étudier leurs codes sources, leur docs d'api etc.

    Également, étudier des design patterns (faire une recherche sur le net)... et pas uniquement php-centric. Les autres langages aux concepts similaires (ou proches), notamment java, ont souvent de bon articles (ou alors c'est java qui est pris en exemple pour tel ou tel article).

  13. #13
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Bonjour à tous !!!

    Moi aussi, j'ai eu du mal à comprendre le concept de la POO.

    Pour ce qui est de de se rendre sur les sites de "grands" frameworks et de parcourir/télécharger/étudier leurs codes sources, comme le conseil metagoto, moi je le dé conseil car quand on a du mal à appréhender le concept, on y comprend rien car trop complexe.

    Le concept étant abstrait (surtout quand on y connais rien en POO) il faut commencer avec des choses simples.

    Ce qui m'a fais découvrir sa puissance c'est d'écrire moi même des class.
    Mettre les mains dans le cambouis quoi ...
    J'ai commencé par une class d'upload ...
    Et là, seulement, j'ai compris.

  14. #14
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Tu n'est pas le seul à ne pas voir l'intérêt de la POO en php, je susi dans le même cas.

    Pourtant au départ je me suis formé à JAVA et sur JAVA oui je saisie bien le but et l'avantage que ca donne, bon j'ai trouvé un job en php donc j'ai laché le JAVA mais il n'en reste pas moins que php je suis pas encore objet.

    J'ai aussi fait une class d'upload, mais bon ca ma pas inspiré, peut-être parceque j'ai pas le temps de tout voir en objet.

  15. #15
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Citation Envoyé par SirDarken Voir le message
    Pourtant au départ je me suis formé à JAVA et sur JAVA oui je saisie bien le but et l'avantage que ca donne, bon j'ai trouvé un job en php donc j'ai laché le JAVA mais il n'en reste pas moins que php je suis pas encore objet.
    Le concept de POO n'a rien à voir avec le langage. Si tu as saisie le truc avec JAVA , tu peux très facilement réappliquer les même design pattern à n'importe quel autre langage dont php
    Les avantages sont les même quelques soient le langage. LA différence c'est qu'en Java on à peu ou pasle choix , il faut faire des classes et des objets.

  16. #16
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Le concept oui je l'ai saisi, mais je n'ai pas encore l'intérêt de le faire en php, peut-être car je ne travail que sur des 'petits' projets, sans framework ect.

    Puis je pense qu'il faut quand même du temps pour le mettre en place, hors j'en ai deja pas pour rédiger un cahier des charges hors post-it donc bon ca aide surement pas.

  17. #17
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Le concept de POO n'a rien à voir avec le langage. Si tu as saisie le truc avec JAVA , tu peux très facilement réappliquer les même design pattern à n'importe quel autre langage dont php
    C'est évident

    Puis je pense qu'il faut quand même du temps pour le mettre en place
    Pas plus qu'en procédural surtout si tu utilise toujours les même bout de code.... Ou que tu travail à plusieurs sur des projets....

    Moi, avant, en procédural et toujours avec l'exemple d'une classe d'upload, je récrivait quasiment tout à chaque fois. Avec la classe, je fait un "copier/coller" et je change trois variables !

    J'ai aussi fait une class d'upload, mais bon ca ma pas inspiré
    Moi, ça m'a inspiré quand j'ai utilisé ma classe pour mon site, pour mon admin et pour mes clients !!!!

  18. #18
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    Citation Envoyé par grunk Voir le message
    Le concept de POO n'a rien à voir avec le langage. Si tu as saisie le truc avec JAVA , tu peux très facilement réappliquer les même design pattern à n'importe quel autre langage dont php
    l'appliquer sur d'autre langages, ok... mais en voir l'utilite sur d'autre langages......
    quand je me suis mit au C#, j'avais quelqu'un pour m'apprendre, et il m'a tout de suite apprit a coder en oriente objet.

    j'arrive a le faire en php, mais je n'arrive pas a me dire : c'est indispensable...
    pour moi, tout ce que je peux faire en php oriente objet, je peux le faire en procedural.
    pourtant je ne pourrais pas me passer de POO en C#


  19. #19
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    pour moi, tout ce que je peux faire en php oriente objet, je peux le faire en procedural.
    En effet, sauf que quand y faudra faire de la maintenance dans des centaines de millier de ligne code , ca sera autrement plus rapide et facile dans du code objet que dans une bouillie procédurale (aussi bien codée soit elle) php/html/js/css.
    A titre d'exemple mon plus petit projet fait 14902 lignes de php brut (hors commentaire , ligne blanche ...)

    En effet la POO n'est pas indispensable , c'est juste (à mon sens) une manière de travailler plus correcte.

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Le gros soucis de la POO en PHP c'est qu'il n'existe pas (ou peu et difficilement trouvables) de tutoriels orientés débutant. On passe direct de $chien->ouahouah() aux design patterns qui font passer la programmation objet pour de la magie Vaudou.

    Un tutoriel/étude de cas pratique pourrait être intéressant pour donner un aperçu et une base aux débutants qui s'intéressent à la question mais se retrouvent rapidement perdus.

    Ça pourrait peut-être faire partie des bonnes résolutions des Mesdames et Messieurs les rédacteurs pour 2010... Ploumploumploum...

    Ok je sors

Discussions similaires

  1. [C#] Une classe sans constructeur, ca existe?
    Par legillou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/07/2006, 09h58
  2. Quelle classe STL pour un simple flux réseau ?
    Par mi6fred dans le forum SL & STL
    Réponses: 28
    Dernier message: 12/06/2006, 14h22
  3. Réponses: 1
    Dernier message: 28/03/2006, 22h08
  4. Classe et constructeurs
    Par Hoegaarden dans le forum Langage
    Réponses: 3
    Dernier message: 05/01/2006, 16h27
  5. classe et constructeur
    Par grand's dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2005, 13h31

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