Das Konzept von ereignisgesteuert ist weit gefasst. Dies kann auf der Clientseite oder auf der Serverseite erfolgen.
In WEB-Anwendungen basieren clientseitige Ereignisse auf JS oder Plug-Ins oder JAVAAPPLET. Wenn es sich um Plug-Ins oder JAVAAPPLET handelt, gehören sie tatsächlich nicht zur Kategorie von HTML Verwendet werden tatsächlich Es gibt nicht viele, es handelt sich höchstens um grundlegende Vorgänge wie das Senden von Formularen oder das Klicken auf Links, daher ist es bedeutungslos, über Ereignisse zu sprechen.
Die wahre Bedeutung von ereignisgesteuert liegt nicht in der visuellen Programmierung, sondern in ihrem Konzept, genau wie bei OO. Ereignisgesteuert ist eigentlich eine Erweiterung von OO, und sein ursprünglicher Prototyp ist der Nachrichtenmechanismus. Der Ereignistreiber kapselt die Nachricht jedoch in eine aufrufbare Funktion, die der Rückruffunktion in der API ähnelt. Sie können den Ausführungsinhalt dieser Funktionen selbst definieren. Visuelle Programmierung trennt diese Funktionen, definiert Parameter (meist vorgefertigte Objekte) und ermöglicht es Ihnen, Ihren eigenen Code zu schreiben und diese Parameter (eigentlich diese Objekte) zu verwenden, um etwas zu tun.
Daher ist es durchaus möglich, dass PHP ereignisgesteuert ist, was vor allem auf das Design des Frameworks zurückzuführen ist. Um einen sogenannten visuellen Ereignistreiber wie VB zu erstellen, benötigen Sie eine unterstützende integrierte Entwicklungsumgebung, die eine Reihe von Funktionen wie Seitendesign, Ereigniskodierung, Kompilierung und Transkodierung umfasst. Tatsächlich kapseln ereignisgesteuerte Systeme wie NET lediglich einige häufig verwendete WEB-Elemente oder -Steuerelemente wie Schaltflächen, Textfelder usw., sodass Sie nach der Kompilierung eine visuelle Schnittstelle zum Entwerfen haben , konvertieren Sie einfach Ihren Ereigniscode in JS oder serverseitigen Code. Bei PHP liegt der Hauptgrund darin, dass die IDE nicht umfangreich genug ist und es keinen Vorkompilierungsmechanismus gibt, sodass der endgültige übermittelte Code immer noch der endgültige PHP-Code ist und nicht eine Mischung aus NET-Ressourcencode und Ereigniscode (normalerweise ein ASP). Dokument, das der XML-Spezifikation entspricht und nicht standardmäßigen HTML-Code enthält. Daher ist PHP nach wie vor nicht in der Lage, die sogenannte ereignisgesteuerte Programmierung im engeren Sinne zu erreichen, aber tatsächlich ist sie völlig problemlos.
Wenn Sie interessiert sind, können Sie auf der offiziellen Homepage von www.php.net einen Blick auf PRADO werfen, ein ereignisgesteuertes PHP-Framework, das von einem chinesischen Freund (Qiang Xue) geschrieben wurde erhielt hohe Stimmen und wird dringend empfohlen! Bitte lesen Sie http://www.zend.com/php5/contest . Nachdem Sie den Quellcode gelesen haben, werden Sie verstehen, was der Ereignistreiber von PHP ist. Ich denke jedoch, dass dieses Framework in dieser Hinsicht etwas sperrig, kompliziert in der Verwendung und nicht sehr skalierbar ist, da PHP keinen Vorkompilierungsmechanismus hat und sich zu sehr auf OO verlässt (obwohl der Code in PHP5 geschrieben ist). Die Konzepte sind jedoch sehr gut, und einige der Ideen haben Probleme gelöst, die mich viele Tage lang beschäftigt haben. Lassen Sie mich diesen Rahmen im Folgenden kurz vorstellen.
Das Framework ist in ZDE und PHP5 geschrieben. Es verfügt über eine detaillierte Dokumentation, eine sehr klare Struktur und ausreichend Kommentare. Der Code ist sehr einfach zu lesen, was darauf hinweist, dass das Codierungsniveau des Autors sehr hoch ist. Der Autor stellte klar, dass sich dieses Framework auf die Konzepte von ASP.NET und Borland Delphi bezieht.
Dieses Framework ist sehr stark in der Verifizierung (es gibt keine Module wie die Verifizierungsanmeldung), es ist sehr robust und es gibt fast keine direkten Lücken, die von außen durchdrungen werden können. Es führt das Konzept der Spezifikationsdateien ein Dadurch wird der Effizienzengpass bei der groß angelegten Verifizierung effektiv gelöst. Das einzige Problem bei dieser Verifizierungsmethode besteht darin, dass die Erstellung der Spezifikationsdatei selbst aufwändiger ist (natürlich ist die Verwendung von Tools eine andere Sache). die Spezifikationsdatei selbst (bei Formaten und Spezifikationen) erfolgt die Überprüfung natürlich durch das Framework, ohne dass jedes Mal menschliche Anrufe erforderlich sind. Seine Ereignisse können auch in der Spezifikationsdatei definiert werden (ich denke, das ist nicht notwendig). Tatsächlich ähnelt die Spezifikationsdatei der FORM-Definitionsdatei in DELPHI oder VB, ist aber nicht in XML geschrieben Visualisierung. Was die Ereignissteuerung betrifft, verfügt das Framework über einen integrierten Satz grundlegender Ereignisflüsse, die denen von NET ähneln. Sie können diese Ereignisse in verschiedenen Phasen anpassen. Um es ganz klar auszudrücken: Dies bedeutet, dass diese OnXXX-Funktionen neu definiert und Parameter verwendet werden Wenn Sie beispielsweise Ihre eigene Komponente definieren, können Sie diese zulässigen Funktionen direkt in der Spezifikationsdatei definieren bei der Verwendung der Komponente - aber ich denke, diese Methode ist zu kompliziert und erfordert das Lesen und Analysieren einer großen Anzahl von XML-Dateien. Obwohl sie sehr streng und sicher ist, ist sie etwas übertrieben und nutzt die Flexibilität von PHP selbst nicht vollständig aus Meine Idee ist, etwas Ähnliches wie DELPHI zu verwenden. Durch die Zuweisung von Funktionshandles oder die Verwendung der Funktionen der Callback-Funktion von C können Sie beim Schreiben von Code jederzeit und überall Ereignisse definieren und dennoch den Absender und Typ des Ereignisses eindeutig identifizieren und haben ausreichende Sicherheitsgarantien, ohne dass Maschinen erforderlich sind. Es zwingt jede Komponente effektiv dazu, nur bestimmte Ereignisse durchzuführen, was die Änderung und Erweiterung des Codes sehr bequem macht. Natürlich sind bei der Arbeit an großen Projekten strenge Definitionen notwendig, aber trotzdem ist die Art und Weise, wie das Framework mit Ereignissen umgeht, etwas altmodisch.
Ich denke, die Vorlage ist eine bessere Idee. Die Vorlage ähnelt in gewisser Weise der ASP-Datei von NET vor der Kompilierung (ich bin mit ASP NET nicht vertraut, verstehe aber einige Prinzipien), aber die Funktionsweise ist eine FORM-Datei, die DELPHI ähnelt ist ein sehr gutes Konzept. Der einzige Nachteil besteht darin, dass es nicht sehr praktisch ist, einen allgemeinen WYSIWYG-Editor wie DW zu verwenden, da mehrere sich gegenseitig ausschließende Komponenten gleichzeitig in einer Vorlage zusammengefasst werden können zur Laufzeit.
Wenn ich mir den Code dieses Frameworks ansehe, stelle ich immer noch fest, dass er einige sehr schwache Elemente enthält. Das wichtigste ist das Pfadproblem. Es sollte eher für dedizierte Hosts geeignet sein. Gegen einige eingeschränkte Hosts (Verzeichnisbeschränkungen oder Berechtigungsbeschränkungen) gibt es keine entsprechenden Erinnerungsmaßnahmen. und keine zugehörige Schnittstelle). Es verwendet einen umständlichen Mechanismus namens assetService für den Pfad bestimmter Ressourcen oder Dateien. Der Autor selbst sagte auch, dass der Systemverbrauch erheblich ansteigt entlehnt von Das Konzept der Asset-Bibliothek in FLASH ermöglicht es Ihnen, den Pfad beliebig anzugeben, er muss jedoch jedes Mal erneut überprüft werden, was den Gewinn nicht wert ist. Mein Ansatz besteht darin, mehrere Hauptpfade festzulegen, deren Unterverzeichnisse beliebig sein können, wodurch der Widerspruch zwischen den beiden umfassend ausgeglichen wird. Aufgrund der fehlenden Berücksichtigung von Pfadproblemen ist das Framework bei Spracheinstellungen, personalisierten Vorlagen usw. machtlos. Wenn Sie ein Projekt übersetzen möchten, ist es denkbar, dass die Verfahren kompliziert sind, der Arbeitsaufwand enorm ist und dies einfach ist Fehler machen. Dies ist das schwerwiegendste Problem des Frameworks.
Generell sind Konzept, Design und Code dieses Frameworks absolut erstklassig. Natürlich gibt es immer Mängel, aber das hindert uns nicht daran, es überhaupt zu studieren und zu lernen. Ich habe nicht den gesamten Code gelesen, nur ein paar Kernprogramme und einige Anweisungen, aber ich kann seine Struktur und Ideen deutlich erkennen. Ich bewundere den Autor zutiefst, bedauere aber auch zutiefst die Mängel. Egal was passiert, es ist auf jeden Fall eine gute Arbeit zum Studium von ereignisgesteuertem PHP-Code. Daher sehr zu empfehlen!