Ich habe kürzlich C++ studiert und Funktionszeiger gesehen. Da ich schon einmal an ASP gearbeitet habe, habe ich mich gefragt, ob es in ASP einen solchen Funktionszeiger gibt Ich habe das VBScript-Handbuch durchgesehen und war nicht enttäuscht. Ich habe die Beschreibung der GetRef-Funktion im Handbuch zitiert.
Gibt einen Verweis auf eine Prozedur zurück, an die ein Ereignis gebunden werden kann.
Setze object.eventname = GetRef(procname)
Parameter
Objekt
Erforderlich. Der Name des mit dem Ereignis verknüpften Objekts.
Ereignisname
Erforderlich. Der Name des Ereignisses, das an die Funktion gebunden werden soll.
procname
Erforderlich. Diese Zeichenfolge enthält den Namen der Sub- oder Function-Prozedur, die dem Ereignis zugeordnet ist.
veranschaulichen
Die GetRef-Funktion kann verwendet werden, um eine VBScript-Prozedur (Funktion oder Sub) mit jedem Ereignis zu verknüpfen, das auf einer DHTML-Seite (dynamisches HTML) verfügbar ist. Das DHTML-Objektmodell stellt Informationen über verschiedene verfügbare Ereignisse für verschiedene Objekte bereit.
In anderen Skript- und Programmiersprachen wird die von GetRef bereitgestellte Funktionalität als Funktionszeiger bezeichnet, das heißt, sie zeigt auf die Adresse einer Prozedur, die ausgeführt werden soll, wenn ein bestimmtes Ereignis eintritt.
Das folgende Beispiel veranschaulicht die Verwendung der GetRef-Funktion:
Kopieren Sie den Codecode wie folgt:
<SCRIPT LANGUAGE=VBScript>
Funktion GetRefTest()
Dunkler Spritzer
Splash = GetRefTest Version 1.0 & vbCrLf
Splash = Splash & Chr(169) & YourCompany 1999
MsgBox Splash
Funktion beenden
Setze Window.Onload = GetRef(GetRefTest)
</SCRIPT>
Das bedeutet wahrscheinlich, dass es zum Binden von Ereignissen verwendet wird. Da ich nicht viel über Ereignisse in ASP weiß, werde ich hier nicht zu viel über die Beziehung zwischen GetRef und Ereignissen diskutieren. Hier untersuchen wir nur die Verwendung von GetRef in WEB-Entwicklungsanwendungen.
In PHP unterstützt PHP keine Zeiger, daher kann die Funktionszeigertechnologie nicht verwendet werden. PHP unterstützt sogenannte Funktionsvariablen, die einer Variablen Funktionen zuweisen können und deren Funktionen Funktionszeigern ähneln.
Einfacheres Beispiel:
Sie können dies in PHP tun
Kopieren Sie den Codecode wie folgt:
<?php
$funcname = cutstr;
echo $funcname();
Funktion cutstr() {
Rückgabefunktion;
}
?>
Mit GetRef kann ASP auch ähnliche Funktionen wie die oben genannten implementieren:
<%
dim Funktionsname
Funktionsname = Schnittstr
Antwort.Write(getref(Funktionsname))
Funktion cutstr()
cutstr = Funktion
Endfunktion
%>
Praktische Anwendungen:
Bei Hintergrundverwaltungsprojekten wie dem Hinzufügen, Löschen, Ändern von Nachrichten und anderen Vorgängen werden wir im Allgemeinen eine versteckte Feldaktion in das Formular oder die URL-Parameteraktion einfügen und bestimmen, welcher Schritt der Die Operation basiert auf dem Wert der Aktion. Normalerweise so geschrieben:
Fall auswählen request.querystring(action)
case add: 'Das zu bedienende Codesegment....
case modifizieren: 'Das zu bedienende Codesegment....
Ende auswählen
Oder verwenden Sie es, falls anders
Durch die Verwendung von Funktionsvariablen kann der Code prägnanter und klarer gestaltet werden. Im Anhang finden Sie ein vollständiges Beispiel für eine häufig verwendete Operation im Hintergrund. Ändern, löschen, hinzufügen.
Sie können ?action=××× verwenden, um die Ergebnisse zu testen
Kopieren Sie den Codecode wie folgt:
<%
Option explizit
dimmen Sie array_action
'Rechtlicher Modulname
array_action = array(list,add,add_form,modify,modify_form,del)
'Ausgabe
Response.write(getref(action))
'Überprüfen Sie, ob die Parameter zulässig sind
Funktion action()
dim str: str = request.querystring(action)
Aktion = array_action(0)
wenn arr_in(array_action,str) dann action = str
Endfunktion
'Bedienungsteil--------
Funktionsliste()
list = Listeninformationen anzeigen
Endfunktion
Funktion add()
add = Add-Vorgang ausführen
Endfunktion
Funktion add_form()
add_form = Formular zum Hinzufügen anzeigen
Endfunktion
Funktion modifizieren()
modifizieren = Änderungsvorgang durchführen
Endfunktion
'--------------------------------
'Überprüfen Sie, ob es im Array vorhanden ist
Funktion arr_in(a,v)
arr_in = false
dim ich
wenn isarray(a), dann
für jedes i in a
Wenn i = v, dann: arr_in = true: Beenden für: Ende, wenn
nächste
Ende wenn
Endfunktion
%>
In vielen Beiträgen geht es um ASP, PHP und .NET. Ich persönlich denke, dass es kein Sprachproblem ist, sondern ein Denkproblem. Sobald Sie die Funktionsprinzipien der Website verstanden haben, wird es auf jeden Fall dasselbe sein Ist die Sprache, in der Sie ihn schreiben, effizient? Ist der Code prägnant und klar? Jeder ist willkommen, mitzudiskutieren!