Points clés
- Laravel et Symfony dirigent actuellement des cadres MVC PHP avec une communauté solide et de nouvelles capacités de développement continu.
- La montée des microservices et des architectures basées sur les conteneurs modifie le r?le de MVC en création d'applications en tant que "fonctions".
- Alors que Laravel est en tête, de grands modèles éloquents et des services excessifs peuvent les compliquer, ce qui entra?ne des applications monolithiques.
- Symfony Bien que parfois cela conduit à des applications monolithiques, elle fournit une élégance et une flexibilité en utilisant des référentiels.
- L'avènement des microservices ne signifie pas que PHP est en train de mourir, mais les développeurs devraient rester en avance et envisager d'apprendre Golang ou Node.js.
Cet article a été initialement publié sur ZenOfCoding et est republié ici avec la permission de l'auteur.
Une question simple m'a incité à m'asseoir et à rédiger ce suivi de mon article il y a environ un an.
Q: Que pensez-vous de la situation actuelle? (24 février 2017)
A: "Je pense que c'est principalement à Laravel et Symfony en ce moment; en ce qui concerne le cadre PHP. Zend, codeigniter, yii, etc. Je peux voir des raisons d'utiliser ces cadres que si vous les connaissez déjà ou si vous avez des développeurs qui ont l'habitude de les utiliser. Lorsque le développement réel commence, vous devez être en mesure de trouver des réponses aux outils, aux plugins et aux questions fréquemment posées. Avec les communautés Laravel et Symfony et le développement continu de nouveaux ?modules? ou fonctionnalités, vous ne vous sentez jamais en arrière. Laracasts seul (même si vous ne développez pas avec Laravel) est génial.
Qu'il s'agisse d'intégration avec des services tels que Iron.io ou d'autres fournisseurs SaaS, le support pour diverses sources de données ou les environnements de développement locaux comme Homestead, ces cadres et modules de support sont plus prospectifs.
Lumen complète le développement rapide de l'API, et Laravel est en effet une excellente méthode pour le développement rapide des applications et le prototypage aujourd'hui. Cela ne veut pas dire qu'il est soumis à une sorte de limitation lors de la construction de grandes applications.
Cependant, dans l'ensemble, nous voyons un passage à une architecture basée sur les conteneurs où MVC est beaucoup moins efficace. Il s'agit de microservices, d'orchestration et de création d'applications dans des "fonctions" (c'est-à-dire AWS Lambda et des services similaires). Il est peut-être temps d'améliorer vos compétences Node.js et Golang :) ?
Bien que je sois généralement satisfait de cette réponse, je ne peux m'empêcher de penser que c'est une bonne idée d'élaborer certains de ces points et de réexaminer le statu quo.
Avant de commencer à parler de sujets étranges comme "Golang", prenons du recul et voyons les tendances du champ Framework PHP MVC 2017.
Je pense que la tendance que nous avons observée dans le passé se poursuit. Laravel évolue toujours tandis que d'autres sont en retard. La popularité de Symfony a légèrement augmenté, peut-être en raison de la sortie très attendue de Symfony 3.
(J'ai essayé des recherches de comparaison plus spécifiques comme "CakePHP 3" ou "ZF2", mais ces recherches n'ont pas produit de tendances statistiquement significatives).
J'ai rejoint Codeigniter cette année parce qu'il était très populaire, et c'était évident. J'ai re?u de nombreuses questions sur Codeigniter et mon opinion sur sa place dans la communauté PHP MVC ... En bref, CI ne rivalise toujours pas car ce n'est pas un vrai framework MVC. Je ne sais pas comment l'appeler sauf pour une collection Popo bien organisée ...
citons directement à partir de leur manuel:
Codeigniter adopte une approche assez lache de MVC car aucun modèle n'est nécessaire. Si vous n'avez pas besoin de séparation supplémentaire ou que vous constatez que le maintien de modèles est plus complexe que vous ne le souhaitez, vous pouvez les ignorer et créer votre application de manière minimale à l'aide de contr?leurs et de vues.
Je suis totalement en désaccord avec cette approche quand il s'agit de construire le cadre. C'est peut-être une belle passe-partout, c'est pourquoi Codeigniter est populaire, mais le cadre doit appliquer certaines disciplines ou le produit final deviendra un tas de codes de spaghetti enveloppés dans une sorte de "motifs".
Ensuite, Symfony 3 nous apporte quelques améliorations à l'expérience du développeur, à l'injection de dépendance et à de nombreuses autres fonctionnalités. Comme de nombreux homologues PHP, il fournit désormais un microframe. En revanche, ZF3 offre une gamme d'améliorations, telles que le support pour PHP7 (éventuellement) et même son propre microframe… mais comme le dit leur manuel:
Pour les utilisateurs de Zend Framework 2 MVC, la différence est subtile ...
J'espère vraiment qu'ils disent qu'il y a beaucoup de différences, il y a des améliorations architecturales majeures et de merveilleux nouveaux modules qui vous aident à développer des choses de manière moderne. Hélas, dans la plupart des cas, ZF3 est toujours très similaire à ZF2.
Short à longue histoire
C'est ainsi que je regarde le monde des frameworks PHP aujourd'hui:
- symfony ou laravel, selon vos besoins
- d'autres
Il ne fait aucun doute que Laravel vole le spectacle. La quantité d'informations disponibles, Laracasts, les talents mondiaux des développeurs, la mise en ?uvre du schéma simple, le jeu d'outils de test intégré, la mise en ?uvre des enregistrements d'activités sous forme éloquente, les versions légères en lumière, le développement local utilisant Homestead (Vagrant) fait que ce cadre se distingue pour les débutants et développeurs expérimentés.
mais le modèle éloquent peut devenir encombré et assez grand, créant potentiellement trop de services Laravel (à ne pas confondre avec les microservices), et les gens commencent à envisager d'implémenter le modèle de référentiel où il ne convient pas. Par conséquent, des demandes de monomère sont nées.
Si vous n'êtes pas familier avec le mode d'enregistrement actif et que vous avez besoin de la flexibilité supplémentaire du référentiel, ou si vous n'aimez pas voir trop de fonctions anonymes, puis utilisez la doctrine Symfony. Est-ce que je pense que Symfony est le chemin des applications monolithiques? Dans une certaine mesure, oui. Cependant, c'est probablement le plus élégant.
Dans l'ensemble, je ne l'appellerai pas un changement radical par rapport à l'année dernière. Pourtant, nous devons examiner le problème d'un point de vue plus large: une application bien con?ue n'est pas seulement MVC; Tout cela peut être mis en ?uvre dans la pile MVC, mais des soins supplémentaires sont nécessaires pour éviter les applications monolithiques.
L'émergence des microservices
J'ai mentionné la montée des microservices et la nécessité d'améliorer les compétences de Golang ou de n?uds. En fait, même dans l'article PHP MVC, il serait insensé de ne pas mentionner le changement évident vers l'architecture orientée microservices (MOA); et c'est incroyablement rapide.
Bien que ces deux concepts ne s'excluent pas mutuellement, il n'y a aucune raison d'essayer de trouver des similitudes entre les deux, car ils représentent des philosophies différentes, quoique qui se croisent.
Par exemple, mettre votre application MVC dans un conteneur, mettre MySQL dans un autre conteneur, puis les lier ensemble ne représente pas nécessairement un MOA approprié. C'est certainement une meilleure approche, en fait, bien mieux que d'essayer d'installer MAMP, XAMPP ou toute autre chose désordonnée dont vous avez besoin pour obtenir une machine locale pour servir votre application.
En outre, il peut résoudre certains problèmes tels que l'exécution facilement des environnements locaux sur différentes plates-formes (développeurs) et le déploiement de politiques dans certains cas, mais les applications monolithiques MVC existent toujours dans votre couche / conteneur de votre application.
Destruction des applications monomères
Ce type de "destruction" est exactement ce que les microservices veulent réaliser. Bien que MVC résout votre structure de code et vos problèmes organisationnels en fournissant un moyen fiable de séparer les préoccupations, le conteneur / service / MOA étend encore ce concept.
Vous ne séparez plus la vue du modèle, mais séparez maintenant chaque unité "bloc" ou logique de l'application en un service séparé con?u pour gérer correctement ses propres responsabilités.
Si votre application MVC a un contr?leur "Rechercher", des opérations et des méthodes de modèle connexes, nous avons déjà des exemples d'applications monolithiques.
Au lieu de cela, en utilisant la méthode MOA, nous fournirons un service pour chaque unité de traitement. Par exemple:
- Service de routage
- Demander Service
- Service d'enquête
- Service de source de données
- Service de réponse
Attendez, mais tous ces "services" ne font-ils pas partie de la pile MVC? Oui, c'est tout. Ce sont des éléments constitutifs de nos applications monolithiques.
avec le MOA, chaque service fonctionne dans son propre environnement, et en tant que développeur et, plus important encore, en tant qu'architecte, nous sommes libres de concevoir la meilleure fa?on de résoudre un besoin spécifique.
Par exemple, si je devais écrire un service de traitement d'image dans un environnement Laravel, je pourrais utiliser des outils tels que les extensions PHP-GD2, ce qui peut ne pas être le moyen le plus efficace de traiter les images. Le service C qui gère mes besoins de traitement d'image peut être beaucoup plus rapide et est certainement plus puissant à l'échelle. Pour élaborer davantage, nous pouvons désormais prendre la sortie du service de traitement d'image et l'envoyer au Service de Datastore, au service CloudStorage et au service de messagerie de file d'attente.
en utilisant un tas de travaux Cron et peut-être des applications MVC et des scripts personnalisés distincts pour résoudre le même défi, c'est ce que nous avons fait dans le passé (c'est-à-dire il y a 2 ans). Il est temps d'aller de l'avant.
évolutivité
C'est là que le problème commence (ou se termine, selon l'endroit où vous vous dirigez). D'une part, il est difficile de mettre à l'échelle des applications monolithiques, et si vous créez de plus en plus de logique dans la même pile MVC, vous pouvez rencontrer une application bien structurée, mais sa complexité est terrifiante.
En revanche, si vous construisez des milliers de microservices dans différentes langues, comment gérez-vous ce gachis?
Plus d'une catastrophe a été signalée.
Il existe différents outils d'orchestration de conteneurs (tels que Kubernetes, Swarm, Mesos), les services de déploiement de conteneurs (c'est-à-dire GKE et AWS ECS), mais peu d'entreprises ont ma?trisé l'architecture Docker. Il y a en effet quelques histoires de réussite sur la création d'infrastructures utilisant Docker ou d'autres technologies de conteneurs (c'est-à-dire GKE). La plupart de ces cas proviennent de sociétés qui peuvent entreprendre les ressources des architectes, des DevOps, des DBA et des ingénieurs. Néanmoins, pour l'instant, il y a d'innombrables débats sur la fa?on de déployer un MOA bien fixé et élégant. Dans ce cas, une taille unique ne convient absolument pas à toutes les situations, et il existe de nombreuses fa?ons de résoudre votre défi.
Quoi qu'il en soit, vous ne pouvez pas résoudre ce problème seul (DevOps FTW!), Et il ne doit être résolu qu'après avoir atteint une échelle relativement grande. Peut-être que ce n'est peut-être pas le meilleur moment pour sur-conception.
Pour aujourd'hui (et ceux qui traitent des applications avec une faible complexité ou une demande de trafic), une approche intermédiaire heureuse consiste à décharger de nombreux services typiques à des fournisseurs tiers. Presque tout est maintenant disponible en tant que service. Les travaux d'arrière-plan, le traitement d'image, l'authentification, l'analyse des données, la journalisation, l'envoi d'e-mails, les systèmes de file d'attente n'ont pas besoin d'être construits dans la même pile MVC, et les architectes devraient considérer ce qui peut être déchargé dans le système SaaS pour des frais mensuels faibles (c'est-à-dire, Recherche d'algolies) ou un service Docker construit sur mesure qui peut s'exécuter dans certains espaces cloud qui gèrent un traitement d'image ennuyeux.
Le point ici, je pense, c'est que vous ne devriez pas plonger de front dans un projet réarchitecte, ne jetez pas tout ce que vous avez aujourd'hui et libérez Docker Swarms partout où vous pouvez imaginer. La base de l'amélioration peut être progressivement introduite en découplant les pièces possibles, en comprenant les goulots d'étranglement dans le système et en appliquant le concept de séparation des préoccupations à ces zones problématiques.
Conclusion
2017 nous apportera plus de conversations et de déploiements de production sur le MOA basé sur les conteneurs. Mes opinions et mes bêtises sur Docker, utiliser Golang ou Node ne signifie pas que PHP est "mort" ou quelque chose comme ?a ... J'ai l'impression que nous devons rester en avance sur le pack en tant que développeurs, donc si les microservices sont là où c'est où, Alors pourquoi ne pas apprendre Golang? Il est idéal pour développer de petites applications conteneurisées (en raison de la petite empreinte, de la vitesse rapide et du traitement parallèle). Node et Golang sont amusants car ils vous permettent de créer de petits services qui font partie de grandes tribus qui les relient ensemble et les publient sous forme d'essaims épiques pour les conteneurs Docker si vous préférez. Cependant, toutes ces solutions et langues de pointe impressionnantes ne signifient pas que PHP n'est donc plus pertinent ou ?mort?. Nous allons certainement construire la pile MVC et les points de terminaison API pendant un certain temps.
Un problème qui n'a pas été résolu avec le MOA est que si les conteneurs nous aident à éliminer les applications monolithiques sur le backend, nous sommes toujours confrontés à de nombreux problèmes architecturaux dans la couche frontale, l'interface utilisateur ou les vues. Nous pouvons créer une application backend très puissante, mais il finira par répondre dans JSON, qui doit être rendu dans la demande client d'une manière ou d'une autre. L'objet de réponse final provient-il d'un simple PHP (par exemple, un point de terminaison (URL) piloté par Lumen) ou une série d'unités de décision et de traitement découplées par une interface de message? Cela dépend vraiment de vos besoins et des exigences de votre application.
Cette année, découvrez Laravel, concentrez-vous sur Docker, Golang et concentrez-vous absolument sur le déploiement de pipelines. La conversion du local à la production devrait être plus fluide qu'elle ne l'a été pendant un certain temps, en particulier lors de la création d'applications MVC.
FAQ sur PHP MVC Frameworks
Quel est le cadre MVC en PHP?
Le cadre du modèle de contr?le du modèle (MVC) dans PHP est un modèle de conception qui divise une application en trois composants interdépendants. Le composant modèle correspond à l'utilisateur en utilisant la logique liée à toutes les données. Le composant de vue est utilisé pour toute la logique de l'interface utilisateur de l'application. D'un autre c?té, le contr?leur agit comme une interface entre le modèle et les composants de la vue pour gérer toutes les demandes de logique métier et entrantes.
Pourquoi devrais-je utiliser le cadre MVC pour le développement de PHP?
Le développement de PHP utilisant le cadre MVC présente de nombreux avantages. Il fournit une séparation claire des préoccupations, ce qui rend le code plus facile à maintenir et à comprendre. Il favorise également la réutilisabilité et l'évolutivité du code, permettant aux développeurs de créer des applications robustes et à grande échelle. De plus, les cadres MVC sont souvent livrés avec des outils et des bibliothèques intégrés pour faciliter les taches telles que l'abstraction de la base de données, la validation des formulaires, les séances et le traitement des cookies.
Quel est le premier cadre PHP MVC en 2017?
En 2017, certains des meilleurs cadres MVC PHP incluent Laravel, Symfony, Codeigniter, Yii2 et CakePHP. Laravel est particulièrement populaire pour sa syntaxe élégante, ses fonctionnalités puissantes et une communauté de développeurs dynamiques. Symfony est également largement utilisé pour son haut degré de flexibilité et d'architecture modulaire.
Comment choisir le bon cadre PHP MVC pour mon projet?
La sélection du bon cadre PHP MVC dépend de plusieurs facteurs, notamment la taille et la complexité du projet, l'expertise de l'équipe, la communauté et le soutien du cadre, ses performances et son évolutivité, et la courbe d'apprentissage impliquée. Il est recommandé que différents cadres soient étudiés et comparés en fonction de ces facteurs avant de prendre une décision.
Comment fonctionne le mode MVC dans PHP Framework?
Dans le cadre PHP MVC, lorsqu'un utilisateur envoie une demande, il va d'abord au contr?leur, qui identifie le modèle approprié pour traiter les données. Le modèle interagit ensuite avec la base de données, traite les données et les renvoie au contr?leur. Le contr?leur charge ensuite la vue correspondante, qui présente des données à l'utilisateur dans un format convivial.
Qu'est-ce que Laravel et pourquoi est-il si populaire?
Laravel est un cadre PHP MVC connu pour sa syntaxe élégante et ses caractéristiques riches. Il fournit divers outils pour le routage, l'authentification, les séances, la mise en cache et d'autres taches. Laravel a également une communauté dynamique et une grande quantité de documentation qui en fait un choix populaire pour les développeurs.
Quelle est la courbe d'apprentissage de PHP MVC Framework?
La courbe d'apprentissage du cadre PHP MVC peut varier. Certains cadres comme Laravel et Codeigniter sont connus pour leur simplicité et sont relativement faciles à apprendre. D'autres cadres tels que Symfony et YII2 peuvent prendre plus de temps à ma?triser car leurs fonctions et concepts sont complexes.
Puis-je utiliser PHP sans cadre MVC?
Oui, vous pouvez utiliser PHP sans cadre MVC. Cependant, l'utilisation de frameworks peut rendre votre processus de développement plus efficace et votre code est plus facile à entretenir, en particulier dans les grandes applications.
Qu'est-ce que l'abstraction de la base de données dans PHP MVC Framework?
L'abstraction de la base de données dans le cadre PHP MVC fait référence à la pratique de la cachette des détails des opérations de base de données pour éviter d'affecter le reste de l'application. Cela permet aux développeurs d'interagir avec la base de données à l'aide d'une API cohérente quel que soit le système de base de données sous-jacent.
Comment démarrer avec PHP MVC Framework?
Pour commencer avec le framework PHP MVC, vous devez d'abord comprendre PHP et les bases de programmation orientées objet. Vous pouvez ensuite choisir un cadre qui convient à vos besoins et à commencer à l'apprendre à travers sa documentation officielle, ses tutoriels en ligne et ses forums communautaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

ToseCurelyHandleAuthentication andAuthorizationInPhp, suivitheSesteps: 1.AlwayShashPasswordSwithPassword_Hash () etverifyusingPassword_verify (), usePreparedStatementStopReventsQLendiject, andstoreSerDatain $ _SessionAfterLogin.2

Pour gérer en toute sécurité les téléchargements de fichiers dans PHP, le noyau consiste à vérifier les types de fichiers, à renommer les fichiers et à restreindre les autorisations. 1. Utilisez finfo_file () pour vérifier le type de mime réel, et seuls des types spécifiques tels que l'image / jpeg sont autorisés; 2. Utilisez Uniqid () pour générer des noms de fichiers aléatoires et les stocker dans le répertoire racine non Web; 3. Limiter la taille du fichier via les formulaires PHP.ini et HTML et définir les autorisations de répertoire sur 0755; 4. Utilisez Clamav pour scanner les logiciels malveillants pour améliorer la sécurité. Ces étapes empêchent efficacement les vulnérabilités de sécurité et garantissent que le processus de téléchargement de fichiers est s?r et fiable.

En PHP, la principale différence entre == et == est la rigueur de la vérification des types. == La conversion de type sera effectuée avant la comparaison, par exemple, 5 == "5" Renvoie True, et === Demande que la valeur et le type soient les mêmes avant que True sera renvoyé, par exemple, 5 === "5" Renvoie False. Dans les scénarios d'utilisation, === est plus sécurisé et doit être utilisé en premier, et == n'est utilisé que lorsque la conversion de type est requise.

Les méthodes d'utilisation des opérations mathématiques de base en PHP sont les suivantes: 1. Les signes d'addition prennent en charge les entiers et les nombres à virgule flottante, et peuvent également être utilisés pour les variables. Les numéros de cha?ne seront automatiquement convertis mais non recommandés en dépendances; 2. Les signes de soustraction utilisent - les signes, les variables sont les mêmes et la conversion de type est également applicable; 3. Les panneaux de multiplication utilisent * les panneaux, qui conviennent aux nombres et aux cha?nes similaires; 4. La division utilise / signes, qui doit éviter de diviser par zéro, et noter que le résultat peut être des nombres à virgule flottante; 5. Prendre les signes du module peut être utilisé pour juger des nombres impairs et uniformes, et lors du traitement des nombres négatifs, les signes restants sont cohérents avec le dividende. La clé pour utiliser correctement ces opérateurs est de s'assurer que les types de données sont clairs et que la situation limite est bien gérée.

Oui, PHP peut interagir avec les bases de données NoSQL comme MongoDB et Redis à travers des extensions ou des bibliothèques spécifiques. Tout d'abord, utilisez le pilote MongoDBPHP (installé via PECL ou Composer) pour créer des instances clients et faire fonctionner des bases de données et des collections, en prenant en charge l'insertion, la requête, l'agrégation et d'autres opérations; Deuxièmement, utilisez la bibliothèque Predis ou l'extension PHPREDIS pour vous connecter à Redis, effectuer des paramètres et des acquisitions de valeur clé, et recommander PHPredis pour des scénarios à haute performance, tandis que Predis est pratique pour un déploiement rapide; Les deux conviennent aux environnements de production et sont bien documentés.

TostayCurrentwithPhpDevelopments andBestPractices, suiventyewnewsources likephp.netandphpweekly, engagewithcommunitiesonforumums et conférences, keeptoolingupdated etgradualadoptnewfeatures, etreadorontruttetoopensourceprojects.

PhpBecamepopularforwebDevelopmentDuetoitSeaseOflearning, Samoussentegration withhtml, widespreadhostingsupport, andalargecosystemysteclustingframeworkslikeLaravelandcmsplateformeslikewordpress.itexcelSinlingFormSubMissions, ManagetingSeSeSessions, interactif, interactif

Tosetherighttimezoneinphp, usedate_default_timezone_set () Fonctionnellestartofyourscriptwithavalididentifiersuchas'america / new_york'.1.usedate_default_timezone_set () beforeanydate / timefunctions.20
