Diese überprüfung der praktischen Designmuster von Brandon Savage in PHP umfasst meine eigenen Meinungen und Impressionen sowohl über das Buch als auch den Aspekt der Selbstver?ffentlichung. Vielen Dank an Brandon, dass Sie mir ein Bewertungskopie gegeben haben.
InKonstruktionsmustern handelt es sich um h?ufige L?sungen für h?ufige Probleme.
… Es sind Konzepte, keine Blaupausen; Ideen, keine fertigen Designs.
… Sie verleihen einer ansonsten schwierigen Situation Klarheit.
- Brandon Savage, praktische Designmuster in PHP
Key Takeaways
- ?Praktische Entwurfsmuster in PHP“ von Brandon Savage bietet einen umfassenden Leitfaden zum Verst?ndnis und zur Implementierung von Entwurfsmustern in PHP mit Schwerpunkt auf gemeinsamen L?sungen für gemeinsame Probleme. Das Buch deckt eine breite Palette von Mustern ab, die jeweils mit potenziellen Codeimplementierungen erkl?rt werden, was es zu einer wertvollen Ressource für Entwickler auf mittlerer Ebene macht.
- W?hrend der Inhalt des Buches gelobt wird, stellt die Bewertung einige M?ngel fest. Dazu geh?ren die mangelnde Erkl?rung für bestimmte Muster wie das Registrierungsmuster und die Annahme, dass die Leser mit fortschrittlichen Konzepten und Inhalten von Drittanbietern vertraut sind. Die Rezension kritisiert auch den Ansatz des Buches zu Modellen in MVC -Anwendungen und das Fehlen praktischer Beispiele für das Dom?nenmodellmuster.
- Die überprüfung unterstreicht die Herausforderungen des Selbstverlagers, wie es in der mangelnden beruflichen Anleitung, Sprachfehlern und gelegentlichen Kuriosit?ten in Code-Beispielen zu sehen ist. Trotz dieser Probleme wird das Buch für Zwischenentwickler empfohlen, die sich mit Designmustern befassen m?chten, jedoch nicht für Anf?nger, die zuerst grundlegende Konzepte beherrschen müssen.
Inhalt
Beginnend mit einem leichteren, einführenden Hinweis erkl?rt Brandon die Notwendigkeit von Frameworks, argumentiert, dass OOP nicht nur in den Klassen einwickelt und detailliert darüber geht, warum Designmuster schwierig zu lernen scheinen. Anschlie?end setzt er eine milde Einführung in feste Prinzipien fort und legt die Grundlage für fortgeschrittenere Konzepte. Er erkl?rt, warum jede solide Regel wichtig ist und was sie bedeutet. Angesichts der Tatsache, dass Solid ein gut etabliertes Software -Design -Prinzip ist, ist es nur natürlich, es mit jedem Muster zu vergleichen, das im Buch erkl?rt werden soll. Oder genauer gesagt, um zu beurteilen, wie gut jedes Muster die soliden Prinzipien respektiert und dem Entwickler seine beabsichtigte Funktionalit?t erm?glicht.
Wenn ich Angelegenheiten in der Dreyfus -Model -Terminologie zum Ausdruck bringen, behauptet er, dass das Buch da ist, um einen Anf?nger in einen kompetenten Entwickler zu verwandeln, ohne sie weiteren Fehlern an Anf?ngern zu unterziehen, wenn tats?chlich ein solcher Lernansatz nicht m?glich ist - das ist - das ist - das ist - das ist - das ist. Nur nicht wie der Prozess des menschlichen Wissens funktioniert.
Da es aus der TOC m?glicherweise nicht überm??ig offensichtlich ist, sind die in diesem Buch erl?uterten Muster in der Reihenfolge:
- das (abstrakte) Fabrikmuster
- Das Singleton -Muster
- Das Builder -Muster
- Das Dekorateur Muster
- Das Adaptermuster
- Das Brückenmuster
- Das Fassadenmuster
- Das Strategiemuster
- Das Mediatormuster
- Das Beobachtermuster
- Die Kette des Verantwortungsmusters
- das Iteratormuster
- Das zusammengesetzte Muster
- Das MVC -Muster
- Das Dom?nenmodellmuster
- Das aktive Datensatzmuster
- Das vordere Controller -Muster
Mit so vielen gedeckten Mustern (und den meisten gut abgedeckt) war ich überrascht, einen Satz wie ? […] zum Beispiel das Registrierungsmuster (nicht in diesem Buch behandelt)… “. Warum nicht? Das Registrierungsmuster ist ein beliebtes Muster und sehr einfach zu erkl?ren, auch wenn es heutzutage nicht genau empfohlen wird.
Muster nach Muster wird jeder gut erkl?rt, und die meisten folgen Code -Beispiele, die ihre potenzielle Implementierung demonstrieren, obwohl ich mit dem Fabrikmuster -Beispiel mit dem Cache einen überfall habe.
Das Muster wird in einem Beispiel für verschiedene Caches realisiert - APC und Memcache - und beide werden durch eine Fabrik hervorgebracht, die in den Diensten injiziert wird, welcher Dienst eine Cache -Komponente ben?tigt.
Es macht für mich Sinn, aber ich kann weniger erfahrene Leute sehen, die sich fragen, warum man den Werksschritt tats?chlich überhaupt braucht, und nicht einfach einen Hinweis auf die Cache -Schnittstelle selbst im Konstruktor, die die Injektion des Cache -Objekts selbst erfordert. und nicht seine Fabrik. Das aktuelle Beispiel enth?lt sowohl eine Fabrikoberfl?che als auch eine Cache -Schnittstelle und zumindest scheint man einen überschuss zu sein. Dies wurde nie auf mittelgro?e Entwickler der mittelgro?en Ebene erkl?rt, und ich befürchte, dass es für einige verwirrend sein k?nnte. Ich bin auch weniger als zufrieden mit der Erkl?rung des Brückenmusters - es schien es zu fehlen, als w?re es nur an der Oberfl?che zerkratzt worden, um niemals richtig zurückzukehren.
Andererseits habe ich die Erkl?rung des zusammengesetzten Musters und seine Demonstration an sehr interessanten Baumbeispielen absolut geliebt - der Autor baut einen zusammengesetzten Baum mit einer willkürlichen Anzahl verschachtelter Knoteneben - und ich war besonders begeistert von der Erkl?rung des Dekorationsmusters. Es wurde sehr zug?nglich und auf gute, verwendbare Beispiele geschehen. Insbesondere dieses Muster war eines, das ich immer Schwierigkeiten hatte, Menschen aus heiterem Himmel zu erkl?ren, als ich gefragt wurde, und ich habe noch keinen besseren Zusammenbruch als in diesem Buch gefunden.
Vernachl?ssigung von Modellen
In einer Instanz des Buches sagt Brandon, dass Modelle die schwersten Lifter einer MVC -Anwendung sind, die alle Gesch?ftslogik- und Validierungscode enthalten. Dies ist eine Aussage, die viel zu absolut für mich ist, um es zu akzeptieren - von der Spitze meines Kopfes kann ich mir ein Beispiel vorstellen, bei dem dies nicht wahr ist: Laravel. Wenn Laravel 5 herauskommt und Formularanfragen hinzufügt, werden die Modelle noch leichter wachsen.
Zugegeben, einige Menschen neigen dazu, alles und das Spülen in die Modelle zu stecken, aber es gibt Menschen, die auch die gleiche Menge an Godcode in Controller einfügen. Meine Erfahrung und Pr?ferenz sagen, dass alles, was mit Framework bezogen wurde , solange sie zwischen Frameworks interoperabel sind. Das ist jedoch pers?nliche Pr?ferenz, nehme ich an. Eine andere Sache hat mich jedoch seltsam gemacht:
“ gute Modelle erstellen ist eine der kompliziertesten Aufgaben, die jeder Entwickler anschlie?t. In der Dokumentation von Zend Framework war es für eine lange Zeit festgestellt, dass es keine Zend_Model -Klasse gab, da das Erstellen eines Modells der Gro?teil eines Anwendungsentwicklungsprozesses ist. Um ein Zend_Model zu erstellen, würde man davon ausgehen
W?hrend dies sinnvoll ist, w?re es unglaublich vorteilhaft gewesen, dass die Wert-, Gateway- und Speicherobjekte im einfachsten Manieren zum ersten Mal unglaublich vorteilhaft gewesen sind. Das Dom?nenmodellmuster war meiner Meinung nach in diesem Buch zu vernachl?ssigt und viel zu theoretisch.
Der Fluch des Wissens
Im gesamten Buch gibt Brandon Hinweise auf fortschrittliche Konzepte (ORM, Erbschaft, Abh?ngigkeitsinjektion) und Inhalte von Drittanbietern, ohne mit der Verknüpfung (Bande von vier) zu verknüpfen, vorausgesetzt, der Leser kennt alles mit allem. Die Bande von vier Jahren wird mehrfach erw?hnt und k?nnte zumindest einen Link zu Entwurfsmustern verwenden - sonst schauen der Leser ?Anf?nger“ und ?Advanced Anf?nger“ nur den Satz in Verwirrung.
In anderen F?llen wird die Absatzstruktur auf eine Weise geschrieben, die weit über das Verst?ndnis für einen Anf?nger bis zum Zwischenbenutzer hinaus geht:
Es ist eine uralte Frage, mit der viele Entwickler immer zu k?mpfen haben: Wenn ich daran arbeite, meine Abh?ngigkeiten umzukehren und keine Objekte in meinen Klassen zu erstellen 'T notwendigerweise injiziert werden?
Dies ist nicht auf einem Niveau, das vom Leser konsumiert werden kann, der dieses Buch ben?tigen würde, um sich mit den Mustern vertraut zu machen. Der Leser, der diesen Satz in vollem Umfang versteht, ist mit allen Mustern des Buches wahrscheinlich bereits voll vertraut und stellt so die eigentliche Zielgruppe in Frage. Ich glaube, dies ist darauf zurückzuführen, dass Herr Savage unter dem, was als ?Fluch des Wissens“ bezeichnet wird, leidet.
wikipedia definiert es als solche:
Der Fluch des Wissens ist eine kognitive Tendenz, die besser informierte Parteien dazu führt, dass es ?u?erst schwierig ist, aus der Perspektive weniger informierter Parteien über Probleme nachzudenken.
Der Fluch des Wissens ist ein sehr h?ufiges Ereignis bei Fachleuten, die nicht formell geschult sind, um das weiterzugeben, was sie wissen, aber auch etwas, das mit Zeit, Erfahrung und Feedback den Effekt verliert. Dies ist auch der Grund, warum wir bei SitePoint die Menschen ermutigen, uns ehrliches Feedback zu unseren Beitr?gen zu geben, und der Grund, warum wir versuchen, die Dinge mit jeder neuen Ver?ffentlichung einfacher und besser gestoppt zu machen. Niemand ist immun gegen den Fluch - einige sind nur mehr davon betroffen.
Die Pest der Selbstver?ffentlichung
In den letzten Jahren scheint sich die Selbstverlagsscheibe wirklich geschafft zu haben. Diejenigen, die nicht auf Leanpub zurückgreifen, gehen vollst?ndig Solo, wie es Brandon mit diesem Buch getan hat. W?hrend dieser Ansatz den Prozess tats?chlich beschleunigt und es Experten erm?glicht, qualitativ hochwertige Inhalte in alarmierend schnellem Tempo in die H?nde interessierter Parteien zu stecken, erm?glicht er auch mehr Fehler, schlechte Inhalte und Tippfehler.
Die meisten Probleme, die andere Selbstver?ffentlichungsautoren plagen, plagen dieses Buch leider auch. Ohne einen erfahrenen Redakteur scheint es keine Anleitung zu Inhalten, Form oder sogar grammatikalischen und syntaktischen Genauigkeit gegeben zu haben - etwas, das Menschen, die in einer Sprache beheimatet sind, oft durcheinander gebracht.
Ich denke, dass Muttersprachler keine Fehler machen und daher keine formelle Bearbeitung ben?tigen, um beispielsweise ein in Y ans?ssiges Unternehmen zu vergleich zu Das einzige Gründe, dass der Korrektor als Muttersprachler von Sprache X ist. Sie m?chten mich wirklich nicht einstellen, um Ihre kroatische Version einer Website zu korrigieren, obwohl es meine Muttersprache ist, aber es f?llt Ihnen schwer, ein besseres Englisch zu finden Sprache Herausgeber.
Schlussfolgerung
Als erweiterter Benutzer hatte ich frühere Kenntnisse über die meisten, wenn nicht alle Muster, die im Buch erkl?rt wurden. Die Erkl?rungen, die ich durchgemacht habe, waren jedoch gut geformt und für einen Zwischenbenutzer zug?nglich - obwohl meiner Meinung nach nicht zu einer geringeren F?higkeiten. W?hrend der Inhalt des Buches sehr gut ist und Brandon hervorragend in Code demonstrieren kann, was die Theorie beschreibt, bin ich der Meinung, dass das Buch als Ganzes viel zu komplex ist, als dass der Neuling Entwickler etwas Greifbares herausholen kann.
Die PHP -Community im Allgemeinen, wie es mir scheint, leidet an einer Art ?fehlender Link“ -Syndrom, bei dem wir die absoluten Anf?ngerbücher haben (?Dies ist Echo, dies ist eine Funktion, dies ist ein PHP -Tag“) und die Zwischenbücher wie diese oder alles, was St?r, Jones, Hartjes und andere herausgegeben haben Der Feueransatz “.
, dass Sie ein Zwischenentwickler sind, der in Muster einsteigen m?chte, und aus diesen unangenehmen Nicken auf Konferenzen, in denen Menschen, die um Sie herum stehen, über sie sprechen, aber nichts verstehen, nichts bekommen - erhalten Sie dieses Buch auf jeden Fall. Wenn Sie ein Neuling sind, kann ich Ihnen nicht empfehlen, dies zu kaufen - noch nicht. Beherrschen Sie zuerst Ihre ?Echos“, lernen Sie, was der Komponist ist, und versenken Sie Ihre Z?hne in diesen.
In der Tat, wenn Sie ein fortgeschrittener Anf?nger sind (Anf?nger sollten bei den Grundlagen beginnen), der dennoch an Mustern interessiert ist, applaudiere ich Ihnen und biete die folgenden Ressourcen an, bevor Sie in dieses Buch eintauchen:
- Elemente von objektorientiertem PHP auf Lernable
- objektorientiertes Php
- objektorientiertes PHP angewendet: Zwei Armeen k?mpfen gegenseitig
- Awesomeness von Alejandro Gervasio - Lesen Sie alles, was dieser Mann jemals geschrieben hat
- Komponist
- mvc
h?ufig gestellte Fragen zu praktischen Entwurfsmustern in PHP
Wie hoch sind die Vorteile der Verwendung von Entwurfsmustern in PHP? Sie bieten eine M?glichkeit, die Effizienz und Wartbarkeit Ihres Codes zu verbessern. Durch die Verwendung von Designmustern k?nnen Sie Ihren Code flexibler, wiederverwendbarer und verst?ndlicher machen. Sie erleichtern auch die Kommunikation zwischen Entwicklern, da sie eine Standardterminologie für bestimmte L?sungen bieten. Um Objekten dynamisch neue Verhaltensweisen hinzuzufügen, indem diese Objekte in spezielle Wrapper -Objekte platziert werden. In PHP kann dies erreicht werden, indem eine Dekorationsklasse erstellt wird, die die ursprüngliche Klasse umhüllt und zus?tzliche Funktionen bietet. Die Dekorateure -Klasse implementiert dieselbe Schnittstelle wie die ursprüngliche Klasse und enth?lt eine Instanz davon. Alle Anrufe an den Dekorateur werden an die ursprüngliche Klasse weitergeleitet, und dann wird das zus?tzliche Verhalten hinzugefügt. Musterbibliotheken und Stilführer sind alle Werkzeuge, die dazu beitragen, die Konsistenz in Bezug auf Design und Entwicklung aufrechtzuerhalten. Ein Designsystem ist die übergreifende Struktur, die die Philosophie, Prinzipien und Werkzeuge umfasst, die den Design- und Entwicklungsprozess regieren. Eine Musterbibliothek ist eine Teilmenge des Designsystems und enth?lt die wiederverwendbaren Designelemente und Komponenten. Ein Stilhandbuch hingegen ist ein Dokument, das die visuellen Designelemente wie Farben, Typografie und Abstand beschreibt. Musterbibliotheken sind ein wichtiges Instrument zur Erreichung von Designkonsistenz. Sie bieten eine Reihe wiederverwendbarer Komponenten, die in verschiedenen Teilen eines Projekts verwendet werden k?nnen. Durch die Verwendung dieser vordefinierten Komponenten stellen Sie sicher, dass die gleichen Entwurfsmuster konsistent verwendet werden, was zu einem zusammenh?ngenden und benutzerfreundlicheren Design führt. Refactoring ist ein Prozess der ?nderung des vorhandenen Code, um seine Struktur zu verbessern, ohne seine Funktionalit?t zu ?ndern. Im Zusammenhang mit Entwurfsmustern kann Refactoring verwendet werden, um ein Designmuster in eine vorhandene Codebasis zu implementieren. Dies kann die Wartbarkeit, Lesbarkeit und h?ufig Leistung des Codes verbessern. ”Bietet einen umfassenden Leitfaden zum Verst?ndnis und zur Implementierung von Designmustern in PHP. Es bietet praktische Beispiele und detaillierte Erkl?rungen verschiedener Entwurfsmuster und erleichtert den Lesern, die Konzepte zu erfassen und sie in ihren eigenen Projekten anzuwenden.
Sind Designmuster nur für PHP anwendbar? Sie sind ein Konzept im Softwaredesign, das auf jede objektorientierte Programmiersprache angewendet werden kann. Die Implementierung kann von Sprache zu Sprache variieren, aber die zugrunde liegenden Prinzipien bleiben gleich.
Wie k?nnen Entwurfsmuster die Kommunikation zwischen Entwicklern verbessern? . Wenn Entwickler diese Begriffe verwenden, vermitteln sie ein spezifisches, gut verstandenes Konzept, das Missverst?ndnisse reduziert und die Kommunikation verbessert. Sie k?nnen auch Komplexit?t einführen, wenn sie nicht ordnungsgem?? verwendet werden. überbeanspruchung von Entwurfsmustern kann zu unn?tiger Abstraktion führen und den Code schwieriger zu verstehen und zu warten. Daher ist es wichtig, sie mit Bedacht zu verwenden und nur dann, wenn sie ein wiederkehrendes Problem wirklich l?sen. Ihre PHP -Projekte sind es, das Problem zu verstehen, das Sie zu l?sen versuchen, und festzustellen, ob es sich um ein wiederkehrendes Problem handelt, das ein Designmuster l?sen kann. Sobald Sie ein geeignetes Designmuster identifiziert haben, k?nnen Sie es in Ihrem Code implementieren. Denken Sie daran, das Ziel ist es, Ihren Code effizienter und aufrechterhalten zu gestalten. Behalten Sie also immer Einfachheit und Klarheit im Auge.
Das obige ist der detaillierte Inhalt vonBuchbesprechung: Praktische Designmuster in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

ToversionAPHP-basiertApieffektiv, useUrl-basiertversionsforclarityAndaseFrouting, separateversionedCodetoAvoidConflicts, DeprecateoldversionswithClearcommunication, und considercustomheadsonlywaNno.

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

ProzeduralandObject-orientedProgramming (OOP) inPhpdifferS sisideftribitionInstructure, Wiederverwendbarkeit und datahandling.1.ProceduralProgrammingusSfunctions-organisierte Folgesequentiell, optableForsmallscripts.

Phpdoesnothaveabuilt-inWeakmapbutoffersWeakreferenceForsimilarFunction.1.WeakreferenceAllowsholdingReferences WithoutPreventingGAGECollection

Um Datei -Uploads in PHP sicher zu verarbeiten, besteht der Kern darin, Dateitypen zu überprüfen, Dateien umzubenennen und die Berechtigungen zu beschr?nken. 1. Verwenden Sie Finfo_File (), um den realen MIME -Typ zu überprüfen, und nur bestimmte Typen wie Bild/JPEG sind zul?ssig. 2. Verwenden Sie Uniqid (), um zuf?llige Dateinamen zu generieren und sie im Root-Verzeichnis ohne Web zu speichern. 3.. Begrenzen Sie die Dateigr??e durch Php.ini- und HTML -Formulare und setzen Sie die Verzeichnisberechtigungen auf 0755; 4. Verwenden Sie Clamav, um Malware zu scannen, um die Sicherheit zu verbessern. Diese Schritte verhindern effektiv Sicherheitslücken und stellen sicher, dass der Upload -Prozess des Datei -Uploads sicher und zuverl?ssig ist.

In PHP ist der Hauptunterschied zwischen == und == die Strenge der Typprüfung. == Die Konvertierung des Typs wird vor dem Vergleich durchgeführt, beispielsweise 5 == "5" gibt true zurück und === fordert an, dass der Wert und der Typ gleich sind, bevor True zurückgegeben wird, z. B. 5 === "5" gibt false zurück. In den Nutzungsszenarien ist === sicherer und sollte zuerst verwendet werden, und == wird nur verwendet, wenn die Typumwandlung erforderlich ist.

Ja, PHP kann mit NoSQL -Datenbanken wie MongoDB und Redis durch bestimmte Erweiterungen oder Bibliotheken interagieren. Verwenden Sie zun?chst den MongoDBPHP -Treiber (installiert über PECL oder Composer), um Client -Instanzen zu erstellen und Datenbanken und Sammlungen zu betreiben, wobei Sie Insertion, Abfrage, Aggregation und andere Vorg?nge unterstützen. Zweitens verwenden Sie die Predis Library oder PHPREDIS-Erweiterung, um eine Verbindung zu Redis herzustellen, Schlüsselwerteinstellungen und -akquisitionen durchzuführen und PHPREDIS für Hochleistungsszenarien zu empfehlen, w?hrend Predis für die schnelle Bereitstellung bequem ist. Beide sind für Produktionsumgebungen geeignet und gut dokumentiert.

Die Methoden zur Verwendung grundlegender mathematischer Operationen in PHP sind wie folgt: 1. Additionszeichen unterstützen Ganzfaktoren und Floating-Punkt-Zahlen und k?nnen auch für Variablen verwendet werden. String -Nummern werden automatisch konvertiert, aber nicht für Abh?ngigkeiten empfohlen. 2. Subtraktionszeichen verwenden - Zeichen, Variablen sind gleich, und die Typumwandlung ist ebenfalls anwendbar. 3. Multiplikationszeichen verwenden * Zeichen, die für Zahlen und ?hnliche Zeichenfolgen geeignet sind; 4. Division verwendet / Zeichen, die vermeiden müssen, durch Null zu dividieren, und beachten Sie, dass das Ergebnis m?glicherweise schwimmende Punktzahlen sein kann. 5. Die Modulzeichen k?nnen verwendet werden, um ungerade und sogar Zahlen zu beurteilen, und wenn negative Zahlen verarbeitet werden, stimmen die Restzeichen mit der Dividende überein. Der Schlüssel zur korrekten Verwendung dieser Operatoren liegt darin, sicherzustellen, dass die Datentypen klar sind und die Grenzsituation gut behandelt wird.
