Heim  >  Artikel  >  Backend-Entwicklung  >  Wie baue ich mit PHP ein eigenes Webframework?

Wie baue ich mit PHP ein eigenes Webframework?

慕斯
慕斯nach vorne
2021-06-16 09:27:382760Durchsuche

In diesem Artikel erfahren Sie in einer Minute, wie Sie mit PHP Ihr eigenes Web-Framework erstellen. (Teilen) hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Wie baue ich mit PHP ein eigenes Webframework?

Das hier erwähnte WEB bezieht sich auf das PHP-WEB-Programm, das unter Apache läuft. H Zunächst müssen wir den Lebenszyklus des PHP-Laufmechanismus und der PHP-Anfrage unter Apache verstehen.

PHP ist eine Skriptsprache, deren Ausführungsprozess vom Dateieintrag bis zum Ende der Datei beginnt. Sie kann andere Dateien enthalten oder darauf verweisen. Während des Prozesses können Objekte verwendet werden, um verschiedene erforderliche logische Verarbeitungen zu implementieren. Sie können ein oder mehrere Objekte verwenden, um die erforderlichen Funktionen auszuführen, und Sie können einem Objekt auch mitteilen, welche Funktion Sie ausführen möchten. Dies ist eine objektorientierte Entwicklungsmethode und eine gängige Entwicklungsmethode. Verwenden Sie daher im prozessorientierten Betriebsmechanismus die objektorientierte Entwicklungsmethode.

Der Lebenszyklus jeder HTTP-Anfrage beginnt ebenfalls vom Eintrag bis zum Ende des Programms. Die darin enthaltenen Variablen sind nicht mehr unabhängig und beeinflussen sich nicht gegenseitig. Wir können globale Deklarationen, globale Array-Variablen $GLOBALS und statische statische Variablen verwenden, um Daten in derselben HTTP-Anfrage zu teilen, um eine gemeinsame Nutzung auf Sitzungsebene zu erreichen; Die globale Anweisung wird im Allgemeinen in Methoden verwendet und wird normalerweise nicht in der prozessorientierten Entwicklung verwendet. $GLOBALS und static werden häufig verwendet, können jedoch nicht direkt bedient werden. Sie werden in Objekten oder speziellen Methoden verwaltet. Der häufig verwendete Singleton-Modus wird beispielsweise mit $GLOBALS und static gespeichert.

Bei PHP-Programmen werden wir darüber nachdenken, das Framework so einfach, effizient, klar und benutzerfreundlich wie möglich zu gestalten, was für die Entwicklung und Wartung von Vorteil ist.

Das grundlegende Programmmodell verwendet das MVC-Modell, das geschichtet und in Module unterteilt ist. Gleichzeitig ist für die Zusammenarbeit mit MVC ein nützlicher URL-Router erforderlich.

URL-Router

: Eine sehr wichtige Komponente, die die Organisationsstruktur der Quellcodedatei und die Klarheit des Codes bestimmt. Ein guter Router kann den logischen Eintrag leicht finden, was die Benutzerfreundlichkeit des Frameworks widerspiegelt. ​

​ ​ Modell:

Verwenden Sie immer Arrays. Das Hauptproblem bei der Verwendung von Arrays besteht darin, dass der Inhalt des Arrays unklar ist. Im Projekt beziehen sich die Attribute auf Datenbankfelder, sodass der Inhalt des Arrays mithilfe der Datenzugriffsschicht DAO relativ klar ist. Beim Datenbankzugriff ist es außerdem effizienter, direkt in Array-Form zu konvertieren. Für interaktive Datenobjekte anderer Systeme gibt es in der Regel Schnittstellendokumentdefinitionen. Was die Active Record-Technologie in ORM betrifft, ist es besser, sie nicht zu verwenden oder nicht.

Ansicht:

Ich habe angefangen, Smarty zu verwenden, aber im Leistungsbericht hat die von Smarty ausgeführte Methode zu viel Zeit in Anspruch genommen. Später habe ich tmd_tpl verwendet, eine Datei, die einfach zu verwenden, effizient und leicht zu ändern ist. Kombinieren Sie in der Ansichtsvorlage die PHP-Syntax und ergänzen Sie sie mit Vorlagenvariablen. Die Idee von MVC ist die Trennung, was nicht bedeutet, dass die PHP-Syntax nicht in View verwendet werden kann. Wenn es sich um eine API-Schnittstelle handelt, können die Daten direkt in ein bestimmtes Formatergebnis konvertiert und zurückgegeben werden.

Controller:

oder Aktion, repräsentiert ein Verhalten, eine Methode und eine Schnittstelle. Nur eine Controller-Schicht reicht oft nicht aus. Sie ist im Allgemeinen in eine Schnittstellenschicht, eine Geschäftsschicht, eine Datenzugriffsschicht und eine Kommunikationsschicht unterteilt. Die Schnittstelle ist für die Parameterüberprüfung, die Zugriffsberechtigungskontrolle, den Aufruf bestimmter Dienste und schließlich für die Rückgabe von Daten oder die Anzeige von Seiten usw. verantwortlich. Für alle Unternehmen ist es am besten, mit der Schnittstellenschicht zu beginnen. Davor sollten wir nur Framework-Dinge ausführen. Wenn wir eine bestimmte Geschäftsimplementierung lesen müssen, müssen wir nur mit dem Lesen entlang des Schnittstellenschicht-Eingangs beginnen. Die Business-Schicht führt tatsächliche Geschäftsfunktionen aus. Die Business-Schicht ruft Daten von der Datenzugriffsschicht ab und führt die Geschäftsverarbeitung durch. Die Datenzugriffsschicht ruft Daten von der Datenbank oder der aufrufenden Schnittstelle ab und kann eine einfache Datenkonvertierungsverarbeitung durchführen. Wenn PHP nur als Front-End für die Datenanzeige verwendet wird und das Back-End von C/C++/GO usw. ausgeführt wird, müssen Sie nur die Business-Schicht kapseln und die Daten an das Back-End anfordern die Business-Schicht und geben Sie sie dann an die Schnittstellenschicht zurück.                                                                                 

Das Obige ist die grundlegende Rahmenstruktur des Programms oder die Prozessstruktur des Unternehmens, die normalerweise der wichtigste Teil des Systems ist. Es ist jedoch noch lange nicht praktikabel und es müssen noch viele grundlegende Funktionen hinzugefügt werden, z. B. Sitzungsverarbeitung, Datenbankzugriff, Protokollverarbeitung und andere Funktionen. Diese Grundfunktionen sind im Allgemeinen unabhängig vom Framework und können auf verschiedenen Frameworks angewendet werden. Funktionsklassen sollten nicht zu eng an das Framework gekoppelt sein und im Allgemeinen Kombinationsmethoden verwenden. Wir kapseln diese Grundfunktionen auf benutzerfreundliche Weise in Kernklassen und verwenden einzelne oder mehrere Instanzen, um sie aufzurufen, oder kapseln die Klassen zur einfacheren Verwendung weiter in globale Methoden.


Wie im Bild oben gezeigt, spiegelt es die Geschäftsfähigkeiten wider, wenn das Zentrum gut erfasst und sortiert ist, denn mit der Entwicklung des Unternehmens bildet sich auf natürliche Weise eine hierarchische Geschäftsstruktur, während die periphere Integration gut ist Es spiegelt die Fähigkeiten des Frameworks wider.

Beim Aufrufen von Funktionsklassen oder Business-Klassen kommt es zu Klassenlade- oder Importproblemen. Wie wäre es mit der Autoloading-Funktion? Aufgrund meiner persönlichen Erfahrung und des Grads der IDE-Unterstützung halte ich es für unintuitiv und unfreundlich. Beispielsweise kann F3 keine definierte Methode finden. Dies ist unsere Erfahrung beim Erlernen von Open-Source-Systemen und hat auch Auswirkungen auf die Leistung. Es ist bequemer, direkt anzufordern/einzuschließen. Obwohl mehr Code geschrieben werden muss, ist die Entwicklung, Wartung und das Lesen sehr bequem (außer dass es unpraktisch ist, die Referenz nach dem Ändern des Namens zu ändern, sie kann jedoch über globale Änderungen geändert werden). suchen). Auf einige öffentliche Klassen wird im Eintrag global verwiesen, auf Business-Klassen wird bei Bedarf verwiesen. Leistungsverlust? Da das Geschäft die meiste Zeit vertikal ist, kann im Allgemeinen „require/include“ anstelle von „require_once/include_once“ verwendet werden. Dies spielt keine Rolle, auch wenn Sie ein paar weitere Onces verwenden. Erstens kann die Korrektheit und das Ganze garantiert werden Die Leistung des Programms wird hierdurch nicht bestimmt. Durch das automatische Laden werden viele Beurteilungen, Anweisungen und Stapelvorgänge hinzugefügt, und die Dateisuche und der Leistungsverlust werden wahrscheinlich größer sein. Allerdings kann eine gute Implementierung des automatischen Ladens in Betracht gezogen werden. Bei Business-Dateien kommt kein automatisches Laden zum Einsatz, und sie müssen einfach, genau positioniert und effizient sein und Duplikate vermeiden.

Wie verwende ich es nach dem Laden einer Methode, einer Klassenobjektmethode oder eines statischen Klassenmethodenaufrufs? Hängt von verschiedenen Szenarien ab. Globale Funktionen sind im Allgemeinen Methodenaufrufe, z. B. die C-Methode von thinkPHP zum Abrufen von Konfigurationsinhalten, die direkt aufgerufen wird. Wenn Sie sich in der Schicht „Schnittstellenschicht->Geschäftsschicht->Datenzugriffsschicht“ befinden, verwenden Sie den statischen Methodenaufruf der Klasse. Einige globale Funktionsoperationen, wie z. B. Datenbankoperationsklassen, einige Funktionsklassen von Drittanbietern und polymorphe Funktionsklassen, werden im Allgemeinen mithilfe von Singletons verwendet, ohne dass neue Objekte mehrmals generiert werden müssen.

Über Reflexionsfunktionen, Anmerkungen, IOC, aspektorientierte Programmierung und andere Funktionen und Praktiken, die in anderen Sprachen sehr nützlich sind, können sie grundsätzlich in PHP implementiert werden. Obwohl ich viele praktische Beispiele gesehen habe, habe ich nicht darüber nachgedacht, sie anzuwenden Projekte zu können bedeutet nicht, dass man es nutzen muss. LAMP kann problemlos eine Website entwickeln und ist im Allgemeinen eine Website-Anwendung, die sich von einem Framework (z. B. Spring) unterscheidet. Daher konzentriert sich die Verwendung von PHP mehr auf den Geschäftsprozess und die Leistung der Website, wodurch der Geschäftsprozess erfolgt Die einfache Wartung gewährleistet Flexibilität, ohne das Geschäft zu erschweren oder die Leistung zu beeinträchtigen. Hochleistungs-Websites müssen kurz, flach und schnell sein. Ganz zu schweigen davon, dass viele Websites PHP für das Front-End-Rendering und C/C++/Java für das Back-End-Geschäft verwenden. Daher sollten PHP-Websites so einfach wie möglich sein. Da es sich bei uns um ein Business-Website-System handelt, wird der Geschäftsprozess von Anfang bis Ende bestimmt. Der im Code wiedergegebene Geschäftscode muss klar sein. Wenn er während des Ausführungsprozesses reflektiert oder eingefügt wird, wirkt sich dies auf das Verständnis der Menschen aus des Unternehmens ignorieren möglicherweise auch, was das Framework bei der Entwicklung und Pflege der Fehlerortung getan hat. Im Gegensatz zu einigen allgemeinen Frameworks oder Paketen von Drittanbietern, die flexibel genug sein müssen, um aufgerufen zu werden, ist Flexibilität kompliziert und es muss ein gewisses Maß an Leistung geopfert werden. Um diese Funktionen verwenden zu können, müssen Sie häufig vorab einen Initialisierungscode oder eine Konfigurationsinitialisierung durchführen, und jede HTTP-Anfrage muss einmal ausgeführt werden. Selbst bei einfachen Funktionen ist dies nicht erforderlich, im Gegensatz zu Java, das nur einmal initialisiert wird. Beispielsweise definieren einige Restfull-Frameworks Routen am Eingang sowie eine große Anzahl von Konfigurationen. Obwohl dies ein gewisses Maß an Klarheit und Flexibilität bietet, wird in diesem Fall empfohlen, die Idee der Konvention zu verwenden Konfiguration.

Einige der oben genannten Praktiken sind etwas ungewöhnlich oder extrem, aber sie haben auch den Original->Rahmen (erweiterte Funktionen, Techniken)->Rückkehr zum ursprünglichen Prozess durchlaufen, der als persönliche einzigartige Gefühle oder Erfahrungen verstanden werden kann. Durch die Verwendung der Grundfunktionen von PHP ist es einfach, ein Projekt zu starten, Geschäftsprozesse zu verstehen sowie es zu entwickeln und zu warten. Es gibt keinen übermäßigen Leistungsverlust und kann auch die Positionierungsoptimierung erleichtern. Kurz gesagt: Primitive Einfachheit ist die beste Leistungssteigerung; das Schreiben des Geschäfts in vertikaler Isolation, und Sie können auf einen Blick sehen, was getan wurde, verbessert die Entwicklungseffizienz.

Wenn Sie zu Beginn nicht in der Lage sind, ein eigenes PHP-Framework entsprechend den Projektanforderungen zu entwickeln, sollten Sie nach der ersten Verwendung eines Frameworks darüber nachdenken, Ihre eigene Website bei Bedarf zu implementieren und Ihr eigenes Framework in anderen Projekten zu bilden .

Ich denke, das einfachste und benutzerfreundlichste PHP-Website-Framework erfordert eine Route, einen Controller und eine View-Template-Engine. Bei Bedarf können weitere Funktionsmodule hinzugefügt werden.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie baue ich mit PHP ein eigenes Webframework?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen