3 Stimmen

Hooks...genau was sie sind

Ich habe Hooks im Kohana PHP-Framework gesehen, und sie funktionieren als eine Art Callback-Funktion, die durch ein bestimmtes Ereignis ausgelöst wird (Kohanas Ereignisse, also eine Art Methodenüberladung).

Ich habe Hooks in Wordpress gesehen, und ich weiß nicht, was sie sind oder wie man sie verwendet (habe sie gestern gesehen).

Ich suche nach Ereignissen in "nicht-geframeworktem" PHP, kann aber keine finden.

Funktionieren Hooks nur in einer "ereignisbasierten" Umgebung? Was sind sie überhaupt (im Allgemeinen, nicht nur in PHP)? Wofür sind sie gut, wenn nicht in einer "ereignisbasierten" Umgebung.

3voto

AlexanderJohannesen Punkte 1988

Hooks sind tatsächlich Hooks in einen Ereignisstapel; eine Liste von Werten, über die eine Steuerung iteriert, und wenn Sie etwas für dieses Ereignis registriert haben, kann die Steuerung Ihren benutzerdefinierten Code ausführen. Aber PHP selbst hat nichts (Nützliches) dergleichen, also müssen Sie es selbst erstellen oder diejenigen verwenden, die Sie in Ihrer Lieblingsanwendung / System finden. Es ist eine ziemlich übliche Methode, um eine Plugin-Architektur zu erstellen, kann aber auch für die Anwendungssteuerung und andere Dinge verwendet werden. Ich habe früher über meine Suche nach einem universalen Ereignis- und Betriebsstapel geschrieben, einschließlich diesem Beitrag hier auf StackOverflow.

Wie andere bereits erwähnt haben, ist PHP zustandslos, also verwende ich sie als einfache Ausführungsliste und hänge jedes Teil meiner Anwendung daran. Auf diese Weise bin ich sehr erweiterbar und habe auch eine Grundlage für einen Plugin-Stapel. (Und ich werde es an einem magischen Tag veröffentlichen, wenn mir langweilig ist oder wenn ich in Rente gehe oder einfach zu viel Freizeit habe, usw.)

Sie werden ähnliche Stapel und Hooks beispielsweise in WordPress finden, sodass ein Plugin, das beispielsweise mit CSS umgeht, sich an das CSS_DEFINITION_EVENT anhängen wird (im Grunde genommen der Teil der WordPress-Anwendung, der CSS-Dinge in den HTML-Bereich schreibt). Diese Art von Dingen ist überall. In PHP gilt dies nur (na ja, meistens) für die Grenzen der Anfrage, die Sie pro PHP-Seite erhalten (es sei denn, Sie arbeiten außerhalb des Webservers), aber alle wichtigen Betriebssysteme, Anwendungen, Frameworks und Systeme haben eine Form von Ereignisstapel. PHP hat einfach keinen (ernsthaft) eingebaut.

1voto

Horia Dragomir Punkte 2830

PHP ist zustandslos, daher kann es eigentlich keine Ereignisse haben. Sie werden emuliert, indem Ereignislistener manuell hinzugefügt und gespeichert werden (Funktionen, die aufgerufen werden sollen), und dann werden diese Listener explizit aufgerufen, wenn im Code etwas passiert. Wie zum Beispiel wenn ein neues Bild hochgeladen wird oder ein 404-Fehler auftritt.

0voto

middus Punkte 9055

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X