Maison > développement back-end > tutoriel php > Revue de livres: modèles de conception pratiques en php

Revue de livres: modèles de conception pratiques en php

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-19 09:33:09
original
325 Les gens l'ont consulté

Revue de livres: modèles de conception pratiques en php

Cette revue des modèles de conception pratiques de Brandon Savage en PHP comprendra mes propres opinions et impressions sur le livre et l'aspect de l'auto-édition. Un grand merci à Brandon de m'avoir donné une copie d'examen.

Les modèles de conception concernent des solutions courantes aux problèmes courants.
… Ce sont des concepts, pas des plans; idées, pas de conceptions finies.
… Ils ajoutent de la clarté à une situation autrement difficile.
- Brandon Savage, modèles de conception pratiques en php

Les plats clés

  • «Modèles de conception pratiques en PHP» de Brandon Savage offre un guide complet pour comprendre et mettre en œuvre des modèles de conception en PHP, en mettant l'accent sur les solutions courantes aux problèmes communs. Le livre couvre un large éventail de modèles, chacun expliqué avec des implémentations de code potentiels, ce qui en fait une ressource précieuse pour les développeurs de niveau intermédiaire.
  • Bien que le contenu du livre soit salué, la critique note quelques lacunes. Il s'agit notamment du manque d'explication pour certains modèles, tels que le modèle de registre, et l'hypothèse selon laquelle les lecteurs connaissent des concepts avancés et du contenu tiers. La revue critique également l'approche du livre sur les modèles dans les applications MVC et le manque d'exemples pratiques pour le modèle de modèle de domaine.
  • La revue met en évidence les défis de l’auto-édition, comme le montre le manque de conseils professionnels du livre, les erreurs linguistiques et les bizarreries occasionnelles dans les échantillons de code. Malgré ces problèmes, le livre est recommandé pour les développeurs intermédiaires qui cherchent à se plonger dans les modèles de conception, mais pas pour les débutants qui doivent d'abord maîtriser les concepts de base.

Contenu

En commençant par une note plus légère et introductive, Brandon explique le besoin de frameworks, soutient que la POO ne signifie pas simplement envelopper des choses dans les classes et explique pourquoi les modèles de conception semblent difficiles à apprendre. Il continue ensuite avec une légère introduction dans des principes solides et jette les bases de concepts plus avancés. Il explique pourquoi chaque règle solide est importante et ce que cela signifie. Étant donné que Solid est un principe de conception logicielle bien établi, il est naturel de le comparer à chaque modèle qui est sur le point d'être expliqué dans le livre. Ou, pour être plus précis, évaluer comment chaque modèle respecte les principes solides, tout en fournissant au développeur ses fonctionnalités prévues.

Revue de livres: modèles de conception pratiques en php

Si j'exprime les questions dans la terminologie du modèle Dreyfus, il affirme que le livre est là pour transformer un novice en un développeur de niveau compétent sans les soumettre à des erreurs débutantes avancées alors que, en fait, une telle approche de l'apprentissage n'est pas entièrement possible - c'est Pas comment fonctionne le processus d'acquisition de connaissances humaines.


Comme il pourrait ne pas être trop évident à partir du COT, les modèles expliqués dans ce livre sont, dans l'ordre:

  • le modèle d'usine (abstrait)
  • Le modèle singleton
  • Le modèle du constructeur
  • Le motif décorateur
  • le motif de l'adaptateur
  • Le motif du pont
  • Le modèle de façade
  • Le modèle de stratégie
  • Le motif du médiateur
  • Le modèle d'observateur
  • Le modèle de la chaîne de responsabilité
  • Le modèle d'itérateur
  • Le motif composite
  • Le motif MVC
  • Le modèle de modèle de domaine
  • Le modèle d'enregistrement actif
  • Le motif du contrôleur avant

Avec autant de modèles couverts (et bien couverts), j'ai été surpris de voir une phrase telle que « […] Par exemple, le modèle de registre (non couvert dans ce livre)… ». Pourquoi pas? Le modèle de registre est un modèle populaire et très simple à expliquer même s'il n'est pas exactement recommandé de nos jours.

Modèle par motif, chacun est bien expliqué et la plupart sont suivis par des exemples de code démontrant leur implémentation potentielle, bien que j'ai un reproche avec l'exemple de motif d'usine avec le cache.

Le modèle est réalisé sur un exemple de caches différents - APC et Memcache - et les deux sont engendrés via une usine, qui est injectée dans le service a besoin d'un composant de cache.

Cela a du sens pour moi, mais je peux voir des personnes moins expérimentées se demander pourquoi on pourrait réellement avoir besoin de l'étape d'usine, et pas simplement taper allusion à l'interface de cache elle-même dans le constructeur, nécessitant l'injection de l'objet de cache lui-même, et non son usine. L'exemple actuel dispose à la fois d'une interface d'usine et d'une interface de cache, et à tout le moins, on semble être un excédent. Cela n'a jamais été expliqué d'une manière accessible d'un développeur de niveau intermédiaire, et je crains que cela ne soit déroutant pour certains. Je suis également loin d'être satisfait de l'explication du motif de pont - cela semblait manquant, comme s'il n'était que rayé à la surface, pour ne jamais revenir correctement.

D'un autre côté, j'ai adoré l'explication du modèle composite et sa démonstration sur des exemples d'arbres très intéressants - l'auteur construit un arbre composite avec un nombre arbitraire de niveaux de nœuds imbriqués qui s'appliquent fantastiquement à la construction de menu, à la représentation de la hiérarchie et plus - et j'étais particulièrement ravi de l'explication du modèle de décorateur. Cela a été fait de manière très accessible et sur de bons exemples utilisables. Ce modèle en particulier était celui que j'ai toujours eu du mal à expliquer aux gens à la sortie du bleu, et je n'ai pas encore trouvé une meilleure panne que dans ce livre.

négligence des modèles

Dans un cas du livre, Brandon affirme que les modèles sont les haltérophiles les plus lourds d'une application MVC, contenant toute la logique commerciale et le code de validation. Ceci est une déclaration qui est beaucoup trop absolu pour que je puisse accepter - du haut de ma tête, je peux penser à un exemple où ce n'est pas vrai: Laravel. Avec Laravel 5 qui sort et l'ajout de demandes de formulaire, les modèles deviendront encore plus légers.

Revue de livres: modèles de conception pratiques en php

Accordé, certaines personnes ont tendance à tout mettre et l'évier de la cuisine dans les modèles, mais il y a des gens qui mettent également la même quantité de code de Dieu dans les contrôleurs. Mon expérience et ma préférence disent que tout ce qui concerne le cadre doit être très léger (petits contrôleurs, petits modèles, petites vues ou pas), et tout ce qui est lié au service (services, plugins, bibliothèques, aides) , tant qu'ils sont interopérables entre les cadres. C’est une préférence personnelle, je suppose. Une autre chose m'a paru bizarre, cependant:

" La création de bons modèles est l'une des tâches les plus compliquées de tous les développeurs. Pendant longtemps, la documentation du framework Zend a soutenu qu'il n'y avait pas de classe Zend_Model car la création d'un modèle est la majeure partie d'un processus de développement d'applications. Créer un Zend_Model serait de supposer que tout le monde pourrait ou voudrait utiliser la même structure de modèle, ce qui serait impossible pour la même raison que je n'ai inclus aucun code dans ce chapitre. "

Bien que cela ait du sens, illustrer la valeur, la passerelle et l'objet de stockage dans la plus simple des manières auraient été incroyablement bénéfiques pour la première fois au modèle du modèle de domaine. Le modèle du modèle de domaine était, à mon avis, trop négligé et bien trop théorique dans ce livre.

La malédiction de la connaissance

Tout au long du livre, Brandon fait des références à des concepts avancés (ORM, héritage, injection de dépendance) et à un contenu tiers sans s'y lier (gang de quatre), en supposant que le lecteur le connaît tout. Le gang de quatre en particulier est mentionné à plusieurs reprises et pourrait utiliser au moins un lien vers les modèles de conception - sinon le lecteur «novice» et «débutant avancé» ne regardera que la phrase dans la confusion.

Dans d'autres cas, la structure des paragraphes est écrite d'une manière bien au-delà du niveau de compréhension d'un utilisateur novice à intermédiaire:

C'est une question séculaire de nombreux développeurs luttent avec tout le temps: si je travaille pour inverser mes dépendances et ne pas créer des objets dans mes classes, comment puis-je créer les dépendances dont j'ai besoin pendant l'exécution qui peut «Ne pas nécessairement être injectés?

Ce n'est pas à un niveau consommable par le lecteur qui aurait besoin de ce livre pour se familiariser avec les modèles. Le lecteur qui comprend entièrement cette phrase est probablement déjà entièrement familier avec tous les modèles du livre, remettant ainsi en question le véritable public cible. Je crois que cela est dû au fait que M. Savage souffre de ce que l'on appelle «la malédiction de la connaissance».

Revue de livres: modèles de conception pratiques en php

wikipedia le définit comme tel:

La malédiction de la connaissance est un biais cognitif qui conduit les parties mieux informées pour trouver extrêmement difficile de réfléchir aux problèmes du point de vue des parties moins informées.

La malédiction de la connaissance est un événement très courant chez les professionnels qui ne sont pas officiellement formés pour transmettre ce qu'ils savent, mais qui est aussi quelque chose qui perd effet avec le temps, l'expérience et les commentaires. C'est aussi pourquoi nous, à SitePoint, encourageons les gens à nous donner des commentaires honnêtes sur nos messages, et c'est pourquoi nous essayons de simplifier les choses plus simples et plus rationalisées à chaque nouvelle publication. Personne n'est à l'abri de la malédiction - certains en sont plus affectés.

La peste de l'auto-édition

Revue de livres: modèles de conception pratiques en php

Ces dernières années, l'auto-édition semble avoir vraiment décollé. Ceux qui ne recourent pas à Leanpub sont entièrement en solo, comme Brandon l'a fait avec ce livre. Bien que cette approche accélère effectivement le processus et permet aux experts de mettre du contenu de qualité entre les mains des parties intéressées à un rythme alarmante rapide, il permet également plus d'erreurs, de mauvais contenus et de fautes de frappe.

La plupart des problèmes qui affligent d'autres écrivains auto-publiés également, malheureusement, affligent ce livre. Manquant d'un éditeur expérimenté, il ne semble pas eu de conseils sur le contenu, la forme ou même la précision grammaticale et syntaxique - quelque chose que les gens qui sont originaires d'une langue gâchent souvent.

pensant que les locuteurs natifs ne font pas d'erreurs et n'ont donc pas besoin d'édition formelle s'apparentent, par exemple, à une entreprise basée sur une personne qui embauche quelqu'un de Country X à la preuve de lire sa version X-Language du site sur Le seul terrain de la relecteurs étant un locuteur natif de la langue X. Vous ne voudriez vraiment pas m'engager pour relire votre version croate d'un site Web même si c'est ma langue maternelle, mais vous auriez du mal à trouver un meilleur anglais langue éditeur.

Conclusion

En tant qu'utilisateur avancé, j'avais une connaissance préalable de la plupart sinon tous les modèles expliqués dans le livre. Cependant, les explications que j'ai vécues ont été bien formées et accessibles à un utilisateur intermédiaire - bien qu'à mon avis, pas à une compétence inférieure. Bien que le contenu du livre soit très bon et que Brandon soit excellent pour démontrer dans le code ce que la théorie décrit, j'ai l'impression que le livre dans son ensemble est beaucoup trop complexe pour que le développeur débutant puisse sortir quelque chose de tangible.

La communauté PHP en général, me semble-t-il, souffre d'une sorte de syndrome de «lien manquant» où nous avons les livres débutants absolus («Ceci est écho, c'est une fonction, c'est une balise PHP») Et les livres intermédiaires comme celui-ci, ou quoi que ce soit Sturgeon, Jones, Hartjes et d'autres ont éteint, mais il y a un terrain d'entente qui reste vide de contenu de qualité et ne peut être conquis que via le bon vieux «jetez-moi dans L'approche du feu.

Cela dit, si vous êtes un développeur intermédiaire qui cherche à se lancer dans les modèles et à sortir de ces hochements de tête maladroits aux conférences où les gens qui se tiennent autour de vous en parlent, mais vous ne comprenez rien - obtenez certainement ce livre. Si vous êtes un débutant, je ne peux pas vous recommander d'acheter ceci - pas encore. Maître vos «Echos» d'abord, apprenez ce qu'est le compositeur, puis enfoncez vos dents dans celui-ci.

En fait, si vous êtes un débutant avancé (les débutants devraient commencer par les bases) qui s'intéresse néanmoins par les modèles, je vous applaudie et je propose les ressources suivantes à examiner avant de plonger dans ce livre:

  • Éléments de PHP orienté objet sur l'apprentissage
  • PHP orienté objet
  • PHP orienté objet appliqué: faire se battre deux armées
  • Awesomeness par Alejandro Gervasio - Lisez tout ce que cet homme a jamais écrit
  • Composer
  • mvc

En ce qui concerne le contenu, je donnerais au livre un 4/5, mais en tenant compte du travail de précipitation, il semble que ce soit vers la fin, les fautes de frappe et les erreurs de langue (bien que pour être juste, il y a une soumission de frappe Github Repo que j'ai déjà pollué avec des correctifs) et le manque évident de conseils professionnels ainsi que certaines bizarreries qui, je crois, incorporeront personnellement de mauvaises valeurs dans les débutants qui trébuchent sur ce livre (commençant les noms de classe avec des nombres dans divers échantillons de code), je ' m terminant le score final à 3/5.

Revue de livres: modèles de conception pratiques en php

Les questions fréquemment posées sur les modèles de conception pratiques dans PHP

Quels sont les avantages de l'utilisation de modèles de conception dans PHP?

Les modèles de conception en PHP fournissent une solution réutilisable aux problèmes courants dans la conception de logiciels. Ils offrent un moyen d'améliorer l'efficacité et la maintenabilité de votre code. En utilisant des modèles de conception, vous pouvez rendre votre code plus flexible, réutilisable et compréhensible. Ils facilitent également la communication entre les développeurs, car ils fournissent une terminologie standard pour certaines solutions.

Comment fonctionne le modèle de décorateur en php? Pour ajouter de nouveaux comportements aux objets dynamiquement en plaçant ces objets à l'intérieur d'objets de wrapper spéciaux. Dans PHP, cela peut être réalisé en créant une classe de décorateur qui enveloppe la classe d'origine et fournit des fonctionnalités supplémentaires. La classe de décorateur implémente la même interface que la classe d'origine et en tient une instance. Tous les appels au décorateur sont transmis à la classe d'origine, puis le comportement supplémentaire est ajouté.

Quelle est la différence entre les systèmes de conception, les bibliothèques de motifs et les guides de style?

Systèmes de conception, Les bibliothèques de motifs et les guides de style sont tous des outils qui aident à maintenir la cohérence dans la conception et le développement. Un système de conception est la structure globale qui comprend la philosophie, les principes et les outils qui régissent le processus de conception et de développement. Une bibliothèque de motifs est un sous-ensemble du système de conception et comprend les éléments et composants de conception réutilisables. Un guide de style, en revanche, est un document qui décrit les éléments de conception visuels, tels que les couleurs, la typographie et l'espacement.

Comment puis-je réaliser la cohérence de conception à l'aide de bibliothèques de motifs?

Les bibliothèques de motifs sont un outil clé pour atteindre la cohérence de conception. Ils fournissent un ensemble de composants réutilisables qui peuvent être utilisés dans différentes parties d'un projet. En utilisant ces composants prédéfinis, vous vous assurez que les mêmes modèles de conception sont utilisés de manière cohérente, conduisant à une conception plus cohésive et conviviale.

Quel est le rôle de la refactorisation dans les modèles de conception?

Le refactorisation est un processus de modification du code existant pour améliorer sa structure sans modifier sa fonctionnalité. Dans le contexte des modèles de conception, le refactorisation peut être utilisé pour implémenter un modèle de conception dans une base de code existante. Cela peut améliorer la maintenabilité, la lisibilité et les performances du code du code.

Comment le livre «Practical Design Matterns in PHP» aide-t-il à comprendre les modèles de conception?

Le livre «Modèles de conception pratiques en PHP »Fournit un guide complet de compréhension et de mise en œuvre de modèles de conception dans PHP. Il offre des exemples pratiques et des explications détaillées de divers modèles de conception, ce qui permet aux lecteurs de saisir plus facilement les concepts et de les appliquer dans leurs propres projets.

Les modèles de conception sont-ils uniquement applicables à PHP?

Non, les modèles de conception ne sont pas exclusifs à PHP. Ils sont un concept de conception de logiciels qui peut être appliqué à n'importe quel langage de programmation orienté objet. La mise en œuvre peut varier d'une langue à l'autre, mais les principes sous-jacents restent les mêmes.

Comment les modèles de conception peuvent-ils améliorer la communication entre les développeurs?

Les modèles de conception fournissent une terminologie standard pour certaines solutions dans la conception de logiciels de conception . Lorsque les développeurs utilisent ces termes, ils transmettent un concept spécifique et bien compris, qui réduit les malentendus et améliore la communication.

Y a-t-il des inconvénients à l'utilisation de modèles de conception?

Alors que les modèles de conception offrent de nombreux avantages , ils peuvent également introduire la complexité s'ils ne sont pas utilisés correctement. La surutilisation des modèles de conception peut conduire à une abstraction inutile et peut rendre le code plus difficile à comprendre et à maintenir. Par conséquent, il est important de les utiliser judicieusement et uniquement lorsqu'ils résolvent vraiment un problème récurrent.

Comment puis-je commencer à implémenter des modèles de conception dans mes projets PHP?

La première étape pour mettre en œuvre des modèles de conception dans Vos projets PHP consiste à comprendre le problème que vous essayez de résoudre et d'identifier s'il s'agit d'un problème récurrent qu'un modèle de conception peut résoudre. Une fois que vous avez identifié un modèle de conception approprié, vous pouvez commencer à l'implémenter dans votre code. N'oubliez pas que l'objectif est de rendre votre code plus efficace et maintenable, alors gardez toujours à l'esprit la simplicité et la clarté.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal