Glossar der Begriffe
AJAX
Asynchronous JavaScript and XML – Technologie für die Client-Server-Kommunikation über das HTTP-Protokoll, ohne dass die gesamte Seite bei jeder Anfrage neu geladen werden muss. Trotz des Akronyms wird häufig das JSON-Format anstelle von XML verwendet.
Präsentator-Aktion
Logischer Teil des Presenters, der eine Aktion ausführt, z. B. eine Produktseite anzeigen, einen Benutzer abmelden usw. Ein Presenter kann mehrere Aktionen haben.
BOM
Die so genannte byte order mask ist ein spezielles erstes Zeichen einer Datei und gibt die Bytereihenfolge in der Kodierung an. Einige Editoren fügen es automatisch ein, es ist praktisch unsichtbar, aber es verursacht Probleme mit Headern und Ausgaben, die von PHP aus gesendet werden. Sie können Code Checker zur Entfernung verwenden.
Steuergerät
Der Controller verarbeitet die Anfragen des Benutzers und ruft auf deren Grundlage eine bestimmte Anwendungslogik (d.h. ein Modell) auf, dann ruft er die Ansicht für die Darstellung der Daten auf. Eine Analogie zu Controllern sind Presenter im Nette Framework.
Cross-Site Scripting (XSS)
Cross-Site Scripting ist eine Methode zur Störung von Websites, bei der unverschlüsselte Eingaben verwendet werden. Ein Angreifer kann seinen eigenen HTML- oder JavaScript-Code einschleusen und das Aussehen der Seite verändern oder sogar sensible Informationen über die Benutzer sammeln. Der Schutz gegen XSS ist einfach: konsistentes und korrektes Escaping aller Strings und Eingaben.
Nette Framework verfügt über die brandneue Technologie des Context-Aware Escaping, mit der Sie die Cross-Site-Scripting-Risiken für immer ausschalten können. Es entschlüsselt alle Eingaben automatisch auf der Grundlage eines bestimmten Kontexts, so dass es für einen Programmierer unmöglich ist, versehentlich etwas zu vergessen.
Cross-Site Request Forgery (CSRF)
Ein Cross-Site Request Forgery-Angriff besteht darin, dass der Angreifer das Opfer dazu verleitet, eine Seite zu besuchen, die im Browser des Opfers eine Anfrage an den Server ausführt, bei dem das Opfer gerade angemeldet ist, und der Server glaubt, dass die Anfrage vom Opfer absichtlich gestellt wurde. Der Server führt unter der Identität des Opfers eine bestimmte Aktion durch, ohne dass das Opfer dies bemerkt. Dabei kann es sich um das Ändern oder Löschen von Daten, das Senden einer Nachricht usw. handeln.
Nette Framework schützt Formulare und Signale in Presentern automatisch vor dieser Art von Angriffen. Dies geschieht, indem verhindert wird, dass sie von einer anderen Domäne aus gesendet oder aufgerufen werden.
Einspritzung von Abhängigkeiten
Dependency Injection (DI) ist ein Entwurfsmuster, das Ihnen sagt, wie Sie die Erstellung von Objekten von ihren Abhängigkeiten trennen können. Das heißt, dass eine Klasse nicht für die Erstellung oder Initialisierung ihrer Abhängigkeiten verantwortlich ist, sondern dass diese Abhängigkeiten von externem Code (der einen DI-Container enthalten kann) bereitgestellt werden. Dies hat den Vorteil, dass der Code flexibler und besser lesbar ist und die Anwendung leichter getestet werden kann, da die Abhängigkeiten leicht austauschbar und von anderen Teilen des Codes isoliert sind. Weitere Informationen finden Sie unter Was ist Dependency Injection?
Container für Dependency Injection
Ein Dependency Injection-Container (auch DI-Container oder IoC-Container) ist ein Werkzeug, das die Erstellung und Verwaltung von Abhängigkeiten in einer Anwendung (oder einem Dienst) übernimmt. Ein Container verfügt in der Regel über eine Konfiguration, die festlegt, welche Klassen von anderen Klassen abhängig sind, welche spezifischen Abhängigkeitsimplementierungen verwendet werden sollen und wie diese Abhängigkeiten erstellt werden sollen. Der Container erstellt dann diese Objekte und stellt sie den Klassen, die sie benötigen, zur Verfügung. Weitere Informationen finden Sie unter Was ist ein DI-Container?
Entkommen
Escaping ist die Umwandlung von Zeichen mit besonderer Bedeutung in einem bestimmten Kontext in eine andere gleichwertige
Sequenz. Beispiel: Wir wollen Anführungszeichen in eine in Anführungszeichen eingeschlossene Zeichenfolge schreiben. Da
Anführungszeichen im Kontext der in Anführungszeichen eingeschlossenen Zeichenfolge eine besondere Bedeutung haben, muss eine
andere äquivalente Sequenz verwendet werden. Die konkrete Sequenz wird durch die Kontextregeln bestimmt (z. B. \"
in
PHPs in Anführungszeichen eingeschlossenem String, "
in HTML-Attributen usw.).
Filter (ehemals Helper)
Filter-Funktion. In Vorlagen ist ein Filter eine Funktion, die dabei hilft, Daten in der Ausgabeform zu verändern oder zu formatieren. In Vorlagen sind mehrere Standardfilter vordefiniert.
Ungültigkeitserklärung
Hinweis auf ein neu zu renderndes Snippet. In anderem Zusammenhang auch Löschung eines Caches.
JSON
Datenaustauschformat, das auf der JavaScript-Syntax (bzw. deren Untermenge) basiert. Die genaue Spezifikation finden Sie unter www.json.org.
Komponente
Wiederverwendbarer Teil einer Anwendung. Sie kann ein visueller Teil einer Seite sein, wie im Kapitel components beschrieben, oder der Begriff kann auch für die Klasse Component stehen (eine solche Komponente muss nicht visuell sein).
Steuerelement-Zeichen
Steuerzeichen sind unsichtbare Zeichen, die in einem Text vorkommen und eventuell Probleme verursachen können. Um sie massenhaft aus Dateien zu entfernen, können Sie Code Checker verwenden, um sie aus einer Variablen zu entfernen, die Funktion Strings::normalize().
Ereignisse
Ein Ereignis ist eine erwartete Situation im Objekt, bei deren Eintreten die so genannten Handler aufgerufen werden, d.h. Callbacks, die auf das Ereignis reagieren (sample). Das Ereignis kann z.B. das Absenden eines Formulars, die Anmeldung eines Benutzers, etc. sein. Ereignisse sind also eine Form der Inversion of Control.
Zum Beispiel tritt eine Benutzeranmeldung in der Methode Nette\Security\User::login()
auf. Das Objekt
User
hat eine öffentliche Variable $onLoggedIn
, die ein Array ist, dem jeder einen Callback hinzufügen
kann. Sobald sich der Benutzer anmeldet, ruft die Methode login()
alle Rückrufe im Array auf. Der Name einer
Variablen in der Form onXyz
ist eine Konvention, die in ganz Nette verwendet wird.
Latte
Eines der innovativsten Templating-Systeme überhaupt.
Modell
Das Modell stellt die Daten- und Funktionsbasis der gesamten Anwendung dar. Es umfasst die gesamte Anwendungslogik (manchmal auch als „Geschäftslogik“ bezeichnet). Es ist das M von MVC oder MPV. Jede Benutzeraktion (Einloggen, in den Warenkorb legen, Änderung eines Datenbankwertes) stellt eine Aktion des Modells dar.
Das Modell verwaltet seinen inneren Zustand und bietet eine öffentliche Schnittstelle. Durch Aufruf dieser Schnittstelle können wir seinen Zustand annehmen oder ändern. Das Modell weiß nichts von der Existenz einer Ansicht oder eines Controllers, das Modell ist völlig unabhängig von ihnen.
Model-View-Controller
Software-Architektur, die sich bei der Entwicklung von GUI-Anwendungen herausgebildet hat, um den Code für die Ablaufsteuerung (Controller) vom Code der Anwendungslogik (Model) und vom Code für die Datenwiedergabe (View) zu trennen. Auf diese Weise ist der Code besser verständlich, erleichtert die zukünftige Entwicklung und ermöglicht es, die einzelnen Teile getrennt zu testen.
Modell-Ansicht-Präsentator
Architektur basierend auf Model-View-Controller.
Baustein
Ein Modul im Nette Framework stellt eine Sammlung von Presentern und Templates dar, eventuell auch Komponenten und Modelle, die einem Presenter Daten zur Verfügung stellen. Es ist also ein bestimmter logischer Teil einer Anwendung.
Ein E-Shop kann zum Beispiel drei Module haben:
- Produktkatalog mit Warenkorb.
- Verwaltung für den Kunden.
- Verwaltung für den Ladenbesitzer.
Namensraum
Namespace ist ein Feature der Sprache PHP ab der Version 5.3 und auch einiger anderer Programmiersprachen. Es hilft, Namenskollisionen (z.B. zwei Klassen mit demselben Namen) zu vermeiden, wenn verschiedene Bibliotheken zusammen verwendet werden. Siehe PHP-Dokumentation für weitere Details.
Präsentator
Presenter ist ein Objekt, das die vom Router aus der HTTP-Anfrage übersetzte Anfrage entgegennimmt und eine Antwort erzeugt. Die Antwort kann eine HTML-Seite, ein Bild, ein XML-Dokument, eine Datei, JSON, ein Redirect oder was auch immer Sie sich vorstellen.
Unter einem Presenter versteht man in der Regel einen Abkömmling der Klasse Nette\Application\UI\Presenter. Bei Anfragen führt er entsprechende Aktionen aus und rendert Vorlagen.
Router
Bidirektionaler Übersetzer zwischen HTTP-Anfrage/URL und Presenter-Aktion. Bidirektional bedeutet, dass es nicht nur möglich ist, eine Presenter-Aktion aus der HTTP-Anfrage abzuleiten, sondern auch eine entsprechende URL für eine Aktion zu generieren. Mehr dazu finden Sie im Kapitel über URL-Routing.
SameSite Cookie
SameSite-Cookies bieten einen Mechanismus, um zu erkennen, was zum Laden der Seite geführt hat. Es kann drei Werte haben:
Lax
, Strict
und None
(letzterer erfordert HTTPS). Wenn die Anforderung der Seite direkt von
der Website kommt oder der Nutzer die Seite durch direkte Eingabe in die Adressleiste oder durch Anklicken eines Lesezeichens
öffnet, sendet der Browser alle Cookies an den Server (d. h. mit den Flags Lax
, Strict
und
None
). Wenn der Nutzer die Seite über einen Link von einer anderen Seite aus anklickt, werden Cookies mit den
Kennzeichnungen Lax
und None
an den Server weitergeleitet. Erfolgt die Anfrage auf andere Weise, z. B.
durch Übermittlung eines POST-Formulars von einer anderen Website, Laden innerhalb eines Iframe, Verwendung von JavaScript usw.,
werden nur Cookies mit dem Kennzeichen None
gesendet.
Dienst
Im Kontext von Dependency Injection bezieht sich ein Service auf ein Objekt, das von einem DI-Container erstellt und verwaltet wird. Ein Service kann leicht durch eine andere Implementierung ersetzt werden, z. B. zu Testzwecken oder um das Verhalten einer Anwendung zu ändern, ohne dass der Code, der den Service verwendet, geändert werden muss.
Schnipsel
Ausschnitt einer Seite, der bei einer AJAX-Anfrage separat neu gerendert werden kann.
Ansicht
Die Ansicht ist eine Anwendungsschicht, die für das Rendern der Anfrageergebnisse verantwortlich ist. Normalerweise verwendet sie ein Templating-System und weiß, wie sie ihre Komponenten oder Ergebnisse aus dem Modell darstellen muss.