Framework, quoi et pourquoi ?

Rechercher

Framework, quoi et pourquoi ?

Par Yacodo  -  5 reponses  -  Le 13/01/2009 06:33  -  Editer  - 

Bonjour à vous,

Ce sujet n'a pas pour envie de relancer un sujet Zend vs Symphony, mais reste dans le même goût, je pense.

 

Tout d'abord pour introduire le sujet principal je vais vous parler d'un cas similaire qui maintenant me fait me poser des questions sur les Framework.

Il y a une ans que je me suis remis à PHP j'ai appris l'existence de la POO, mais ne voyant pas ce que cela pouvait m'apporter je refusait d'apprendre avec envie cette méthode de programmation. Et je me suis cassé les dents en essayant d'apprendre cette méthode pour pouvoir comprendre à analyser une source POO.

Mais depuis quelques jours j'ai une envie réel d'apprendre la POO, car j'ai enfin compris ce qu'elle m'apporterai. N'ayant pas de temps en ce moment, je reporte ça pour deux-trois semaines.

Bref ce point là introduit les framework.

J'étais fermé à la POO, comme aux framework, maintenant la POO j'en ai une réelle envie. Et donc si cela se trouve, je penserai la même chose des framework un jour.

Mais pour me mettre aux framework j'ai plusieurs questions que j'aimerais vous posez, mais tout d'abord je tient à préciser que je n'ai pas de "bonne (?)" définition d'un framework, et je ne sait pas aussi à quoi peut t'il servir.

Et voici donc la liste des questions :

-Qu'est ce qu'un framework ?

-Que peut t'il m'apporter dans mon développement ?

-Change t'elle ma façon de coder comme un assisté débutant programmeur se servant d'interface WYSIWYG, ou rend plus mature et lisible ma façon de développer ?

-Mis à part la prise en main, est ce plus simple de développer avec un framework une fois habitué, et une fois seulement à ces fonctionnabilités.

-Quel sont les points principaux d'un développement avec framework, et si vous me conseillerez un framework pour qu'elles raisons ?

 

Et si vous avez plusieurs autres choses dont vous souhaitez me faire part pour me convertir aux framework, n'hésitez pas.

Mes recherches sur Symphony n'ont portées que sur des pages anglaises, et pour tout vous dire, j'ai un niveau très médiocre.

En espérant ne pas vous avoir assommer avec mes questions, et en vous remerciant d'avoir déjà pris le temps de me lire. Cordialement, Yacodo

PS:J'ai déjà tenté un développement avec Copix(2heures... très faible, oui), mais je n'aime pas la façon de développer, et si bien sur tout les framework nous font développer comme ça, ne prenait pas la peine de répondre à toutes les questions

 

Réponses apportées à cette discussion

Par Yacodo  -  Le 13/01/2009 07:01  -  Haut de page  - 

A la relecture u message j'ai vu apparaître plusieurs fautes, et des phrases très bizarres mais qui ne le rende pas pour autant illissible, j'en suis désolé.

Mais la faute la plus méchante, et d'avoir dit à deux reprises Symfony, avec un ph.

 

Yacodo

 
Par Emacs  -  Le 13/01/2009 13:29  -  Haut de page  - 

Salut Yacodo et bienvenue sur Apprendre-PHP,

Je vais répondre à ta question une par une, en essayant d'être un minimum exhaustif.

***Qu'est ce qu'un framework ? ***

Un framework est un outil qui te permet de structurer / d'architecturer un projet tout en t'apportant un outillage plus ou moins exhaustif. Un bon framework t'impose donc une architecture (approche MVC, arborescence de fichiers, manière de penser l'application), des conventions de nommage des fichiers ainsi que des conventions de nommage du code, et surtout des outils divers et variés pour répondre aux besoins récurrents d'un projet. Par exemple, le framework symfony intègre nativement :

  • une couche d'abstraction de la base de données,
  • un ORM,
  • un générateur de CRUD,
  • un générateur d'interface d'administration,
  • le support des l'internationalisation et de la localisation pour les sites multilingues,
  • un framework de génération de formulaires,
  • un framework de tests unitaires et fonctionnels,
  • un framework de routing pour pouvoir créer des belles URL rewritées côté PHP,
  • une interface en ligne de commande pour piloter ton projet,
  • un système de cache automatique des pages générées pour améliorer les performances,
  • de la sécurité contre les failles CSRF et XSS,
  • la possibilité de créer et de simuler différents environnements (production, développement, test...)
  • ...

Tout ça sont des outils qui te sont mis à disposition d'origine. Il ne te reste plus qu'à les utiliser pour pouvoir développer ton application. Ce qu'il faut savoir, c'est qu'un framework ne construit pas l'application à ta place. Il te donne les outils et les moyens d'y parvenir en te faisant gagner du temps et par la même occasion de l'argent quand tu un prestataire professionnel.

Plus concrètement, imaginons que tu décides de développer ton propre blog. Tu as le choix entre le faire avec un framework ou bien le faire à la main depuis "rien". Si tu le fais à la main depuis rien, tu vas devoir d'abord construire ta base de données, insérer des données fictives de tests, développer les classes / fonctions qui vont manipuler ta base de données, générer les templates d'affichage, te soucier toi même de la sécurité...

Si tu pars sur un framework, tu peux déjà commencer à développer les règles métiers et les templates de ton application car tout le reste sera généré à ta place par le framework. La sécurité sera gérée nativement, les classes de manipulation de ta base de données seront auto générée à la volée, l'architecture MVC est déjà prête à être utilisée... Le framework te permet donc de démarrer tout de suite et bien, sans que tu aies à réinventer la roue à chaque fois puisque le framework te donne des outils prêts à l'emploi.

Un autre avantage d'un framework, c'est qu'il permet à une équipe de développement de travailler facilement sur le même projet. En effet, vu que le framework impose une architecture bien définie ainsi que des conventions de nommage des fichiers pour fonctionner, alors tous les développeurs sont cadrés par les mêmes règles. Donc ils sauront tous comment se répérer dans le projet, savoir comment il fonctionne, où ils doivent trouver tel ou tel composant... Pour un prestataire professionnel, c'est d'autant plus un avantage car si son équipe travaille sur un framework donné et qu'il cherche à recruter un nouveau développeur, alors il pourra en trouver facilement sur le marché, et il sera prêt à démarrer sur les projets de l'entreprise car il connaîtra déjà le fonctionnement interne du framework. Pour le patron, ça lui permet aussi de diminuer les coûts de formation de son personnel au moment de l'embauche.

***Que peut t'il m'apporter dans mon développement ? ***

  • Une organisation dans la manière de structurer proprement une application,
  • un gain de temps important,
  • de la sécurité,
  • une maintenabilité et évolutivité plus aisée,
  • une pérénité de ton applicatio,
  • un outillage important,
  • ...

Ca apporte surtout beaucoup de plaisir à développer car tu te concentres directement sur les fonctionnalités de l'application à développer sans avoir à te soucier à redévelopper des tâches fastidieuses comme la génération des formulaires par exemple. Le but d'un framework, c'est aussi de pouvoir se faire plaisir en développant.

Change t'elle ma façon de coder comme un assisté débutant programmeur se servant d'interface WYSIWYG, ou rend plus mature et lisible ma façon de développer ?

Bien sûr, un framework est un outil comme un autre. Il te faut donc le prendre en main, le tester, l'apprivoiser jusqu'au jour tu arrives à la maîtriser complètement. Le plus dur c'est de démarrer. C'est comme avec n'importe quel outil. Prends l'exemple de Photoshop. Avec Photoshop, on peut faire plein de trucs géniaux quand on le maîtrise mais au début on galère quand on ne le connait pas.

***Mis à part la prise en main, est ce plus simple de développer avec un framework une fois habitué, et une fois seulement à ces fonctionnabilités. ***

Le plus dur c'est de démarrer avec un framework. Il faut lire beaucoup de documentation, faire beaucoup de tests et de tutoriels pour en comprendre les fondamentaux. Mais après quelques semaines d'utilisation, on s'aperçoit très vite du potentiel que ça apporte sur un développement.

Quel sont les points principaux d'un développement avec framework, et si vous me conseillerez un framework pour qu'elles raisons ?

Je te conseille d'utiliser un framework pour pouvoir architecturer ton application et surtout pour ne pas à avoir à redévelopper à chaque fois des briques logicielles fastidieuses. Le framework le fait à ta place et le fait bien. Les développeurs de frameworks se creusent la tête pour concevoir des outils simples et puissants, tout en leur intégrant les meilleures pratiques de développement informatique comme les design pattern, le refactoring du code... C'est donc une bonne raison de l'utiliser.

Si tu es amené à choisir un framework, le conseil majeur que je peux te donner, c'est de trouver un framework qui dispose d'une communauté importante et d'une documentation! Utiliser un framework sans documentation, c'est mission impossible. Et un framework sans documentation ne peut être reconnu comme un bon framework. C'est notamment ce qui fait toute la force de symfony et de Zend Framework. S'il y'a à choisir un framework, je ne peux que te recommander symfony ;)

***Mes recherches sur Symphony n'ont portées que sur des pages anglaises, et pour tout vous dire, j'ai un niveau très médiocre. ***

Bien que symfony soit un framework développée par une société française (Sensio Labs), sa documentation est entièrement en anglais pour des raisons évidentes d'internationnalisation. Le but de symfony c'est de toucher une communauté internationnale de développeurs. Donc la documentation est en anglais. Mais en cherchant bien sur le site officiel, tu peux trouver pas mal de traductions en français de certains tutoriels comme celui de Jobeet. Sinon il y'a des blogs en français qui en parlent aussi. Mais malgré tout, la connaissance minimale de l'anglais est sacrément un plus. Il suffit juste d'être motivé pour apprendre et tu verras que l'anglais n'est qu'une toute petite barrière dans ton apprentissage ;)

En espérant avoir répondu pleinement à tes questions.

Hugo.

 
Par Yacodo  -  Le 13/01/2009 20:05  -  Haut de page  - 

Rebonjour,

Merci pour la rapidité de votre réponse.

Votre réponse m'ouvre les yeux sur l'utilité d'un framework,et donc je pense prendre le temps d'apprendre à me servir de Symfony, et puis si je ne suis pas totalement satisfait je jetterai un coup d'oeil du côté du Zend. Dans tout les cas je testerai les deux pour me faire une opignion afin de choisir exactement celui avec lequel je me "formerai".

 

Cordialement,

Yacodo

 
Par Tef  -  Le 14/01/2009 17:11  -  Haut de page  - 

Bonjour,

Je rajoute juste un petit message pour remercier Emacs pour cette explication ! Je me posais justement toutes ses questions (oui oui les mêmes) et je vais creuser Symfony. Lors d'un entretien dernièrement pour ma reconversion en développeur Web (je suis technicien info), on m'a parlé justement de Symfony et je pense que je vais prendre de l'avance et voir comment tout cela fonctionne.

Merci ;)

Stéphane

 
Par Emacs  -  Le 14/01/2009 20:16  -  Haut de page  - 

Je t'encourage à l'utiliser si tu veux apprendre beaucoup de choses en terme de développement agile et de bonnes pratiques de programmation ;)

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |