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 :

Passer du procédural à l'OO


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Par défaut Passer du procédural à l'OO
    Bonjour tout le monde,

    Cela fait une dizaine d'années que je développe des sites web en PHP. Je développe tout à partir d'une page blanche. Le seul "problème" je n'ai appris que PHP procédural en utilisant au départ des livres très didactiques du type "pour les nuls" etc avant de progresser....
    Je souhaiterais me mettre à la programmation objet et apprendre à utiliser un Framework.

    - Quels livres pouvez-vous me conseiller pour passer en douceur du procédural à l'objet (que je n'ai jamais ni utilisé ni vraiment compris) ?
    - En me consacrant en moyenne 3 à 4 heures/jour à ce nouvel apprentissage combien de temps faut-il en moyenne pour commencer à se débrouiller seul puis bien maîtriser.

    Merci pour vos conseils.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Je ne pense pas que cela soit la meilleure approche que de te frotter à la POO en attaquant d'emblée un framework.
    Tu vas cumuler deux gros problèmes : l'abstraction fournie par la POO et la complexité du framework qui considère à tous les coups que les concepts relatifs à la POO sont assimilés et surtout déjà bien maîtrisés.
    Le framework va t'apporter une architecture entièrement bâtie sur les concepts de la POO. Si tu ne les connais pas plus que ça, tu vas passer un temps astronomique pour réaliser des broutilles.

    Commence par le début, un bon livre sur la pensée orientée objet, ensuite transpose les exemples que tu vas y trouver dans le monde Web : exemple voiture/roue/gps vers page/formulaire/routeur... et redessine les schémas. Le meilleur ami dans ton cas, c'est le papier et le crayon. Le but c'est que tu accroches d'entrée de jeu, si cela ne te parle pas, tu vas rapidement jeter l'éponge comme 15% des développeurs réfractaires aux concepts de la POO. Je pense que ce pourcentage a dû baisser depuis dans la mesure où cela est enseigné dans les écoles.

    Pour le délai, pas de réponse, c'est très personnel. Cela va dépendre de tes facilités et surtout de l'intérêt que ces concepts vont soulever en toi.
    Bon courage et si tu commences à tout voir ou diviser en objets, c'est qu'il est grand temps de faire une pause.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Même conseil, oublie les framework pour l'instant. La POO étant un paradigme indépendant de tout langage, je te conseille de lire Penser en Java de Bruce Eckel. Ce livre est obsolète en relation avec Java, qui a considérablement évolué depuis, mais est une excellente introduction à la POO.

    Sautes toutes les parties relatives à Java, aux structures du langage, aux opérateurs, etc... Lis uniquement les parties liées aux objets: III-Introduction aux objets (A à F), VIII-Réutiliser les classes (composition, héritage), IX- Polymorphisme, X-A-Interfaces.

    Tous les cas abordé ne correspondent pas forcément à PHP, mais le modèle objet de PHP (ainsi que certains framework comme Symfony) sont largement inspirés par Java.

    Si tu lis l'anglais, j'aurais plus de ressources pour toi.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Par défaut
    Merci beaucoup de vos conseils, c'est bien noté pour les Frameworks je les étudierais plus tard.

    Le livre de Java que tu me conseilles j'avais à l'époque étudié Java mais je n'aimais pas des masses, je préfère php procédural mais bon... J'ai beaucoup utilisé les livres de la Collection Noire d'Eyrolles pour apprendre PHP et les autres langages je les ai trouvé relativement didactiques, les livres de Hugues Bersini ou Claude Delannoy "s'initier à la programmation objet" vous en pensez-quoi ?
    L'objet est-il vraiment beaucoup beaucoup utilisé ? Dans les livres que j'ai et même ma reference "PHP5 avancé" de Daspect et de De Geyer je vois à l'intérieur plus d'exemples en procédural qu'en objet...

    Merci pour vos réponses

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Citation Envoyé par popy67 Voir le message
    Merci beaucoup de vos conseils, c'est bien noté pour les Frameworks je les étudierais plus tard.

    L'objet est-il vraiment beaucoup beaucoup utilisé ? Dans les livres que j'ai et même ma reference "PHP5 avancé" de Daspect et de De Geyer je vois à l'intérieur plus d'exemples en procédural qu'en objet...
    Aujourd'hui, tu peux très bien faire des sites et ne pas faires de la POO. PHP est un langage extrêmement flexible qui te permet de faire à peu près tout ce que tu veux.

    Il faut faire la différence entre utiliser des objets dans un code procédural, ce qui est pratiquement inévitable, et faire des sites/applications en vrai POO. Tu peux même utiliser des micro-framework comme Silex ou Lumen tout en écrivant ton propre code en procédural.

    Ceci dit, ce n'est pas une raison pour ne pas en faire, on peut très bien faire des sites en pur HTML/CSS/Javascript aussi, sans PHP.

    La POO permet de savoir comment mieux organiser ton code, faire en sorte qu'il soit réutilisable, flexible, adaptable, plus facile à lire (ce qui est extrêmement important pour des projets nécessitant une maintenance ou mises à jour à moyen et long terme), de mieux séparer le code pour pouvoir changer facilement et séparément le HTML, le CSS ou le code PHP sans devoir se dépatouiller dans un code spaghetti qui fait des centaines de lignes. Et puis surtout, est-ce qu'il t'es déjà arrivé de modifier une ligne, et de voir que cette modification a entraîné toute une cascade de bugs? La (bonne) POO (bien organisée) te permet d'éviter ça.

    Bref, tout dépend de ce que tu veux faire, des genres de sites que tu veux réaliser.

    Le problème que je vois chez beaucoup de réfractaires est qu'il y a un seuil à franchir entre l'apprentissage de la POO (et ses exemples basiques comme "Cat extends Felin implements Animal") et le code organisé, réutilisable, fexible etc.. comme décrit ci-dessus. Et franchir ce seuil prends du temps, il demande la maîtrise de la POO, mais également de notions d'architecture (SOLID), de design patterns etc... Et parfois, ce temps et cet effort ne valent pas la peine: si tu fais des sites relativement simples, par exemple.

    C'est peut-être pour ça que ton livre met moins l'accent sur la POO: en procédural, la récompense est immédiate: tu peux faire du concret très vite. En POO, la récompense est plus forte, mais prends du temps.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    Ceci dit, ce n'est pas une raison pour ne pas en faire, on peut très bien faire des sites en pur HTML/CSS/Javascript aussi, sans PHP.

    Et puis surtout, est-ce qu'il t'es déjà arrivé de modifier une ligne, et de voir que cette modification a entraîné toute une cascade de bugs? La (bonne) POO (bien organisée) te permet d'éviter ça.

    Et parfois, ce temps et cet effort ne valent pas la peine: si tu fais des sites relativement simples, par exemple.
    Merci pour ta réponse.
    On peut faire un site sans PHP mais bon mis à part pour un site vitrine à la rigueur je voudrais pas en faire sans php...

    Sinon à titre perso je n'ai jamais eu de cascade de bugs mais je ne doute pas 1 seconde que ca doit être courant en procédural...

    Pour les sites, je réalise des boutiques en ligne, des blogs, sites communautaires, tout ce qu'on me demande.... A titre perso j'ai par exemple fait celui qui est sur ma signature et encore celui-ci tous en procédural, les passer en PHP OO ça serait un plus et permettrait de réutiliser du code etc c'est ça ?

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Dans les livres tu vois beaucoup de procédural parce que les algorithmes sont facilement traduisibles en procédural. La POO n'est qu'un outil qui permet de mieux organiser son code. Donc c'est inadapté pour expliquer des fonctionnalités basiques, sauf pour expliquer le principe de la poo elle-même.

    Si tu ne maitrise pas les grands principes je te conseille d'y aller progressivement et de commencer par créer des objets qui seront utilisés dans ton code procédural. Même de cette manière tu verras des avantages à créer des classes qui pourront constituer des objets autonomes réutilisables dans d'autres scripts.

    Ensuite comme dit Tsilefy, il y a aussi la POO au service de l'architecture générale du site. Là c'est plus compliqué et c'est pour cela que je te conseillerais plutôt de ne pas aborder les deux sujets en même temps. Quand tu auras un peu avancer en poo "basique" (ou plus tôt si tu veux), tu pourras regarder ce sujet.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Citation Envoyé par popy67 Voir le message
    Pour les sites, je réalise des boutiques en ligne, des blogs, sites communautaires, tout ce qu'on me demande.... A titre perso j'ai par exemple fait celui qui est sur ma signature et encore celui-ci tous en procédural, les passer en PHP OO ça serait un plus et permettrait de réutiliser du code etc c'est ça ?
    Si tu as beaucoup de codes qui se répètent dans un même site ou d'un site à l'autre, oui.
    Est-ce que tu pourrais ajouter une fonctionnalité de blog ou de de boutique en ligne à tes sites communautaires sans devoir réécrire beaucoup de code existant? C'est le genre de fonctionnalités qu'un site (bien) développé en Objet permet.

    Il faut bien aussi comprendre que tout ce que tu fais en objet, tu pourrais aussi le faire en procédural (avec l'utilisation de fonctions). L'objet n'est pas une recette magique qui permet de résoudre tous les problèmes, mais c'est un outil de plus qu'il est utile d'avoir dans sa sacoche pour l'utiliser au bon moment.

    Comme ABCIWEB l'indique, tu peux garder une structure procédurale, mais par exemple mettre tout le SQL dans une ou plusieurs classes, mettre le code d'authentification des utilisateurs dans une ou plusieurs classes, de même pour l'email, le contrôle des droits avant d'autoriser un téléchargement, la redirection des urls, etc... De cette manière, tu obtiens un ensemble de classes utilitaires que tu peux réutiliser d'un site à l'autre.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    J'ai été un peu dans la même situation y'a une bonne grosse dizaine d'année ^^.

    La principale difficulté que j'ai rencontré c'était que pour faire la même chose la POO est plus compliquée. Il faut plus de code , une architecture plus complexe et du coup , on à du mal à saisir l'intérêt de la chose.
    C'est très difficile à accepter quand on à un code procédural qui fonctionne parfaitement.

    Le déclic pour moi ca à été de travailler sur des projets un peu plus importants , où le procédural devenait difficile à gérer (répétition du code, variable globales , etc ...)

    J'appuie ce que les autres on dit , surtout ne pas se lancer dans un framework pour apprendre la POO. Aujourd'hui les fw de type SF ou Zend sont très avancés en terme de conception et c'est très dur voir impossible à appréhender sans background objet.
    Le framework php que j'utilise aujourd'hui (voir signature) est à l'origine de mon apprentissage de la POO (bon ca à évolué depuis ^^ ). j'avais besoin d'une base commune pour plusieurs projets et ça été mon fil rouge tout au long de mon apprentissage.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Oui, autant la POO au service de l'architecturale est complexe à mettre en place si l'on veut avoir des bénéfices probants, autant la POO au service de la réalisation de modules autonomes ou encore pour regrouper des fonctionnalités spécifiques nécessaires à un traitement est vite jubilatoire, pratique et puissante par rapport à l'utilisation de fonctions
    Donc prends le problème par le bon bout

Discussions similaires

  1. passer une procédure sur le clique d'un popup menu
    Par sebyo dans le forum Débuter
    Réponses: 3
    Dernier message: 15/05/2009, 11h49
  2. Passer une procédure en paramètres
    Par FamiDoo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/02/2008, 14h41
  3. Passer des procédures stockées à Hibernate
    Par zizoux5 dans le forum Hibernate
    Réponses: 2
    Dernier message: 11/04/2007, 13h08
  4. Comment passer une procédure en paramètre ?
    Par gudul dans le forum Langage
    Réponses: 4
    Dernier message: 30/09/2005, 13h57
  5. Passer une procédure en paramètre ?
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 12h21

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