Quand dois-je utiliser un framework? [fermé]

15

Je suis nouveau dans la programmation Web et en ce moment j'apprends PHP. Je voudrais savoir quand dois-je utiliser un framework PHP tel que CakePHP? Quelles sont les choses que cela et d'autres frameworks PHP similaires m'offrent? Et est-il vraiment important d'utiliser un cadre pour être un professionnel?

  • Et puis-je créer mon propre framework pour y fournir les fonctionnalités que j'aime?
Goma
la source
3
Lorsque vous comprenez ce qu'il offre et pouvez le contourner si nécessaire, utilisez le framework [xyz]. Les cadres sont des outils destinés aux personnes qualifiées qui savent les utiliser et comprendre les limites de leurs choix. N'apprenez en aucun cas une langue en étudiant seul un cadre. C'est comme éteindre délibérément les orteils ou la vision périphérique. Astuce, les sessions se comportent bizarrement selon le framework PHP que vous utilisez .. soyez prudent :)
Tim Post

Réponses:

10

Lorsque vous êtes à l'aise avec PHP, vous pouvez commencer à utiliser un framework. Et vous devez toujours les utiliser:

  1. C'est beaucoup, beaucoup plus rapide que de tout recoder
  2. Il facilite les modifications, comme changer les bases de données ou changer les vues
  3. Travailler avec d'autres personnes sera également plus facile, car ils sont souvent habitués à l'utilisation des frameworks de modèles MVC.

Vous pouvez créer votre propre framework, mais je ne le recommanderais certainement pas. C'est compliqué, il y a déjà beaucoup de bons frameworks, et il est peu probable que vous trouviez une fonctionnalité manquante. De plus, ils fournissent souvent des moyens de leur ajouter vos propres fonctionnalités, sans avoir à en créer de toutes nouvelles.

DistantEcho
la source
2
+1 pour Lorsque vous êtes à l'aise avec PHP, vous pouvez commencer à utiliser un framework. Votre point 3) ne fonctionne bien que si les cadres sont très similaires. J'ajouterais "ne créez pas de framework avant d'en avoir utilisé plusieurs de manière
intensive
8
Je suis absolument en désaccord avec l'énoncé "vous devez toujours les utiliser". Ils ne conviennent pas à tous les projets et finissent souvent par rendre les modifications plus difficiles . Les utilitaires sont bien plus précieux que les frameworks.
Nicole
+1 pour @NickC, je ne pourrais pas être plus d'accord. Certains frameworks prétendent être dynamiques et faciles à changer, mais vous arrivez à un certain point et vous ne pouvez tout simplement pas. J'ai beaucoup pleuré sur ce genre de chose :)
Steve Hill
Je conviens que MVC est un très bon terrain d'entente permettant à d'autres personnes d'entrer dans votre code avec moins de courbe d'apprentissage lorsqu'il est utilisé correctement. Mais MVC est l'étoile brillante là-bas, le cadre (ou son absence) n'est que la mise en œuvre.
Tim Post
Tout cela est théorique et ne fonctionne pas dans la pratique. Les frameworks PHP sont plus susceptibles de rendre toutes ces choses plus difficiles. L'application moyenne écrite de toutes pièces a besoin d'environ cinq cent à cinq mille lignes de code cadre. Cela représente environ une semaine de travail moyenne. Si c'est plus que cela, vous écrivez probablement une bibliothèque ou vous créez une plate-forme interne.
jgmjgm
9

Construisez quelques pages sans framework ... vous commencerez essentiellement à écrire votre propre framework par essais et erreurs. Après cela, passez à un cadre et profitez du temps que vous économisez. Essayer de créer votre propre framework peut vous apprendre certaines choses et vous aidera à apprécier les frameworks qui existent déjà.

Quand j'ai commencé à utiliser PHP, je pensais que les frameworks étaient une perte de temps compliquée. Maintenant, j'utilise CodeIgniter pour des projets même simples. Il faut environ 1 minute pour être opérationnel et vous disposez déjà d'une tonne de superbes bibliothèques. Et, comme l'a mentionné une affiche précédente, la plupart des frameworks sont extensibles, vous pouvez donc toujours ajouter les fonctionnalités que vous souhaitez.

TaylorOtwell
la source
2
Mais comment puis-je m'assurer plus tard que le code dans le framework est exactement comme je le souhaite? Je veux dire que chaque programmeur a son propre style, non? Et le cadre !!
Goma
1
@Goma Et la langue? Je n'en ai pas encore trouvé un qui fasse tout ce que je veux. Le cadre ajoute simplement quelque chose de très, très similaire (espérons-le à un niveau d'abstraction un peu plus élevé). Sérieusement, le codage ne consiste pas à «tout faire ressembler / se comporter / être exactement comme je le souhaite». première place.
Christopher Creutzig
Et maintenant @TaylorOtwell est le créateur de Laravel ...
Hos Mercury
4

Comme l'a dit Niphra , ne commencez à utiliser un framework que lorsque vous pouvez utiliser PHP sans framework (c'est-à-dire, accéder à la base de données, envoyer des en-têtes et du contenu, traitement de chaînes, manipulation de données, etc.). En ce qui concerne vos questions:

  • Quand dois-je utiliser un framework PHP tel que CakePHP? Lorsque votre projet se développe au-delà de quelques fichiers PHP; le moment où vous commencez à séparer fortement la logique en éléments distincts et la fonctionnalité de modularisation / partage (sessions, etc.), c'est quand vous devez utiliser un cadre.

  • Quelles sont les choses que cela et d'autres frameworks PHP similaires m'offrent? Abstraction; au lieu d'interagir directement avec la base de données, vous pouvez utiliser un mappage relationnel-objet (ORM) pour gérer la structure et les relations entre vos données dans la base de données. La plupart des frameworks dans de nombreuses langues fournissent des ORM pour faciliter l'interaction avec la couche de base de données de votre application. De même, les cadres séparent souvent les couches de réponse à l'interaction de l'utilisateur. La séparation la plus courante est le paradigme MVC (Model View Controller), qui, pour être bref, résume la logique de la base de données dans le modèle (une interface avec l'ORM, dans de nombreux cas), traite les demandes et interagit avec les modèles dans le contrôleur, et le rendu du HTML / PDF / image / etc. dans la vue. Les cadres fournissent souvent d'autres outils tels que le routage (pour permettre un traitement complexe de l'URI de la demande (EG: mappage de la demande "http://example.com/users/1 "aux utilisateurs du contrôleur, qui recherche ensuite le modèle utilisateur avec l'ID de 1) et une abstraction des sessions et d'autres structures de base.

  • Et est-il vraiment important d'utiliser un cadre pour être un professionnel? Pas nécessairement; les cadres facilitent la vie; mais vous n'avez pas besoin d'en utiliser un pour être un professionnel. Les cadres fournissent une abstraction et une standardisation pratiques, mais ils ne sont pas obligatoires dans la plupart des cas.

poignard
la source
3

Après avoir lu certaines des réponses, je voudrais d'abord dire que vous n'avez souvent pas beaucoup d'option sur le cadre que vous allez utiliser ou si vous allez en utiliser un ou non (en tant que professionnel). Je ne veux pas vous intimider, mais vous devrez acquérir une compréhension suffisante de PHP pour permettre de passer d'un framework à un autre en utilisant plus d'un framework à la fois.

quand dois-je utiliser un framework PHP tel que CakePHP?

Il n'y a pas de réponse universelle à cela. En tant que professionnel, vous allez être chargé de résoudre des problèmes spécifiques et ce sera le facteur décisif pour quand et quoi de chaque projet, surtout si un client a une demande spécifique. Mais d'une manière générale, vous utiliserez toujours une certaine forme de framework avec PHP, à moins que vous ne modifiiez ou étendiez une application préexistante qui a son propre framework (comme Wordpress ou PHPBB).

Quelles sont les choses que cela et d'autres frameworks PHP similaires m'offrent?

Comme l'a dit dirk, ils proposent l'abstraction. Cela signifie qu'ils suivent des procédures communes en plusieurs étapes et essaient de les rendre aussi simples et rationalisées que possible. En bref, ils essaient de présenter des solutions d'ajout d'eau pour les tâches courantes.

Et est-il vraiment important d'utiliser un cadre pour être un professionnel?

De manière générale, non, il n'est pas important d' utiliser un cadre pour être professionnel. Mais en réalité, vous n'aurez pas beaucoup de carrière si vous n'êtes pas familier avec au moins quelques cadres communs. PHP sans framework est comme C ++ sans bibliothèque std. Vous n'en avez pas besoin, et vous pouvez réellement en faire plus car vous utiliserez directement la fonctionnalité de bloc de construction de niveau inférieur du langage, mais cela vous prendra beaucoup plus de temps pour faire la même chose.

Et puis-je créer mon propre framework pour y fournir les fonctionnalités que j'aime?

Oui. En fait, vous finirez probablement par le faire, même si ce n'est pas intentionnel. Par cela, je ne veux pas dire un cadre expansif de tout faire, mais plus comme une boîte à outils de fonctions de base et de scripts qui effectuent des tâches ne sont pas assez communs ou génériques pour être gérés par le cadre moyen. Le mien est essentiellement composé de divers systèmes de fichiers, de la gestion des processus et des bits tid rex-ex avec quelques utilitaires curl et stream / socket différents.

JSON
la source
1

Commun d'une personne qui a passé des années à pirater mes propres façons de parler à une base de données et de parler aux API en ligne et qui commence à peine à utiliser des frameworks, utilisez-les lorsque vous avez au moins une compréhension de ce qu'ils font, si possible.

Ne sautez pas immédiatement pour RedBean lors de votre première utilisation d'une base de données, travaillez d'abord avec la base de données manuellement. De cette façon, vous avez une compréhension approfondie de ce que vous récupérez et faites réellement dans la base de données, ce qui peut vraiment aider à l'évolutivité. Vous pouvez également créer votre propre solution lorsque le framework que vous utilisez ne fait pas ce que vous devez faire.

Une fois que vous comprenez ce qui se passe, utilisez un cadre! Cela rend les choses beaucoup plus faciles. Le crazyness avec le stockage d' une requête , puis en boucle sur les résultats avec mysql_fetch_assocest tout disparu, réduit à un seul appel: $book = R::load( "book", $id ). Vous serez beaucoup plus productif et pourrez corriger de futurs bugs ou ajouter de futures fonctionnalités beaucoup plus facilement.

TheLQ
la source
1

Utilisez un framework lorsque vous connaissez suffisamment les technologies sous-jacentes pour savoir ce que le framework fait pour vous et pourquoi c'est bon (ou mauvais).

Un framework est en quelque sorte un méta-outil, qui vous permet de travailler avec vos outils (langue, base de données) un peu plus rapidement sans avoir à vous soucier de certains détails de ce que vous faites, ce qui est bien si vous connaissez vraiment votre outils.

Ce que vous NE VOULEZ PAS faire, c'est que vous apprenez le cadre au lieu des outils, que vous deveniez canalisé dans une certaine manière de faire les choses et que vous finissiez par ne pas vraiment maîtriser les langages et les concepts sous-jacents - ce devrait être un outil, pas une béquille.

Eli
la source
1

Lorsque vous vous retrouvez à faire la même chose encore et encore, regardez autour de vous et voyez s'il existe un cadre qui fait les mêmes choses redondantes que vous auriez fini par faire vous-même. N'utilisez pas seulement un cadre en raison du battage médiatique. Personnellement, j'aime CodeIgniter et le "framework PHP MVC sans framework" de Rasmus Lerdorf http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html

programmeur
la source
J'ai écrit plusieurs `` cadres sans cadre '' pour soulager la douleur d'ajouter de nouvelles fonctionnalités à des sites principalement statiques (et énormes) qui ne peuvent tout simplement pas être facilement portés dans n'importe quel type de système de gestion / publication, donc ils ont leur utilité. Mais je ne roulerais pas le mien pour un tout nouveau projet (j'utiliserais juste CI si un framework était demandé).
Tim Post
@Tim Post Il n'y a généralement jamais de réponse en noir et blanc à cette question. Tout dépend du projet en cours, le message d'origine n'a pas donné de détails sur un projet particulier.
programmeur
1
On dirait que j'ai obtenu un vote négatif d'un fanatique du cadre, sympa!
programmeur
Ce n'était pas moi :) Quelqu'un aurait pu réagir au lien que vous avez publié sans vraiment entrer dans les détails.
Tim Post
@Tim Post Heh! C'est pourquoi je me suis assuré de séparer ces deux commentaires. : D
programmeur
-1

Je recommanderais de bien réfléchir à la raison pour laquelle vous utiliseriez le cadre x, y ou z. Chaque framework ne fournit pas seulement des fonctionnalités, que vous n'avez pas à implémenter vous-même, mais aussi une manière de penser. Il suffit de regarder Spring, JEE, Rails ou Django. Quatre cadres fournissant suffisamment pour écraser une application Web en peu de temps.

Mais tous les quatre promeuvent leur propre façon de penser sur la façon dont les applications Web doivent être construites. Et si cela ne correspond pas à vos besoins ou ne correspond pas à votre saveur, vous aurez du mal à aller plus loin.

Cela a été une comparaison très radicale mais peut-être que la construction d'une petite bibliothèque correspond mieux à vos besoins. Mais connaître les frameworks vous aidera certainement à travailler dans de plus grandes équipes ou à trouver de nouveaux emplois, car cela montre que vous vous intéressez au développement logiciel dans son ensemble.

Florian Salihovic
la source
-2

Les cadres sont toujours bons à utiliser dès le départ. Il favorise la réutilisation du code, une meilleure lisibilité et économise un peu de temps de développement.

Je ne suis pas très expérimenté avec PHP, mais j'encouragerais toute utilisation du framework.

Pierre Pretorius
la source
Pourquoi les votes négatifs?
Pierre Pretorius