最近 C++ を勉強していて関数ポインタを見たことがあります。ASP にもそのような関数ポインタがあるのかと思って Baidu で検索したところ、この点についてはあまり紹介されていなかったので調べてみました。 VBScript のマニュアルを調べましたが見つかりませんでした。残念ながら GetRef 関数を見つけました。マニュアルの GetRef 関数の説明を引用しました。
イベントをバインドできるプロシージャへの参照を返します。
object.eventname = GetRef(procname) を設定します。
パラメータ
物体
必須。イベントに関連付けられたオブジェクトの名前。
イベント名
必須。関数にバインドされるイベントの名前。
プロシージャ名
必須。この文字列には、イベントに関連付けられた Sub または Function プロシージャの名前が含まれます。
説明する
GetRef 関数を使用すると、VBScript プロシージャ (Function または Sub) を DHTML (ダイナミック HTML) ページで使用可能なイベントに関連付けることができます。 DHTML オブジェクト モデルは、さまざまなオブジェクトで利用可能なさまざまなイベントに関する情報を提供します。
他のスクリプト言語やプログラミング言語では、GetRef によって提供される機能は関数ポインターとして知られており、指定されたイベントが発生したときに実行されるプロシージャのアドレスを指します。
次の例は、GetRef 関数の使用法を示しています。
次のようにコードをコピーします。
<スクリプト言語=VBScript>
関数 GetRefTest()
ディムスプラッシュ
スプラッシュ = GetRefTest バージョン 1.0 および vbCrLf
スプラッシュ = スプラッシュ & Chr(169) & YourCompany 1999
メッセージボックススプラッシュ
終了機能
Window.Onload = GetRef(GetRefTest) を設定します。
</スクリプト>
おそらく、イベントのバインディングに使用されることを意味します。私は ASP のイベントについては詳しくないので、ここでは GetRef とイベントの関係についてはあまり説明しません。ここでは、WEB 開発アプリケーションでの GetRef の使用についてのみ説明します。
PHP ではポインターをサポートしていないため、関数ポインター技術は使用できません。 PHP は、関数を変数に割り当てることができる、いわゆる関数変数をサポートしており、その関数は関数ポインターに似ています。
より単純な例:
PHPでこれを行うことができます
次のようにコードをコピーします。
<?php
$funcname = カットストラ;
エコー $funcname();
関数cutstr() {
戻り関数;
}
?>
GetRef を使用すると、ASP は上記と同様の関数を実装することもできます。
<%
薄暗い関数名
関数名 = カットストラ
応答.Write(getref(関数名))
関数カットストラ()
Cutstr = 関数
終了関数
%>
実際の応用:
ニュースの追加、削除、変更などのバックグラウンド管理プロジェクトを実行する場合、その他の操作は同じページで処理されます。通常、フォームに隠しフィールド アクションまたは URL パラメーター アクションを挿入し、そのステップを決定します。操作は action の値に基づいて行われます。通常は次のように書かれます。
select case request.querystring(action)
case add: '操作対象のコードセグメント....
casemodify : '操作対象のコードセグメント....
エンドセレクト
または if else を使用します
関数変数を使用すると、コードをより簡潔かつ明確にすることができます。バックグラウンドでよく使用される操作の完全な例を添付します。変更、削除、追加。
?action=××× を使用して結果をテストできます。
次のようにコードをコピーします。
<%
明示的なオプション
ディム配列アクション
'有効なモジュール名
array_action = array(list,add,add_form,modify,modify_form,del)
'出力
応答.write(getref(アクション))
'パラメータが有効かどうかを確認します
関数アクション()
dim str : str = request.querystring(アクション)
アクション = 配列アクション(0)
if arr_in(array_action,str) then action = str
終了関数
'操作部----------------------
関数リスト()
list = リスト情報を表示します
終了関数
関数追加()
add = 追加操作を実行します
終了関数
関数 add_form()
add_form = 追加フォームを表示
終了関数
関数変更()
変更 = 変更操作を実行します
終了関数
'--------------------------------
'配列内に存在するか確認する
関数 arr_in(a,v)
arr_in = false
薄暗い私
isarray(a) の場合
それぞれの私に対して
if i = v then : arr_in = true : exit for : end if
次
終了する場合
終了関数
%>
多くの投稿では ASP、PHP、.NET のどれが優れているかについて議論されていますが、個人的には、これは言語の問題ではなく、Web サイトの機能原理を理解すれば、どれを選択しても同じだと思います。コードを書くのに使用する言語は効率的ですか? それは自分のレベルによって異なります。誰でも議論することを歓迎します!