时间:2021-07-01 10:21:17 帮助过:44人阅读
<SCRIPT LANGUAGE="VBScript">
Function GetRefTest()
Dim Splash
Splash = "GetRefTest Version 1.0" & vbCrLf
Splash = Splash & Chr(169) & " YourCompany 1999 "
MsgBox Splash
End Function
Set Window.Onload = GetRef("GetRefTest")
</SCRIPT>
大概意思是为绑定事件所用,因为本人对ASP中事件了解不多,所以在这里对GetRef和事件的关系也不做过多的讨论。这里只研究下WEB开发应用中GetRef的用处。
在PHP里面,PHP不支持指针,因此无法使用函数指针这一技术。PHP支持所谓的“函数变量”,可以把函数赋予某个变量,其作用类似于函数指针。
简单点的例子:
PHP里面可以这么做
代码如下:
<?php
$funcname = "cutstr";
echo $funcname();
function cutstr() {
return "function";
}
?>
有了GetRef,类似上面的功能ASP也可以实现:
<%
dim funcname
funcname = "cutstr"
response.Write(getref(funcname))
function cutstr()
cutstr = "function"
end function
%>
实际应用:
在做后台管理的项目时,比如新闻添加,删除,修改,等操作在同一个页面处理,一般我们会在form里面插入一个隐藏域action,或者url参数action,根据action的值来判断操作哪一步。通常这么写:
select case request.querystring("action")
case "add" : '要操作的代码段....
case "modify" : '要操作的代码段....
end select
或者使用if else
使用“函数变量”可以使代码更加简洁、清晰,附上一个完整的例子,该例是后台中常用的一种操作。修改、删除、添加。
可以使用?action=×××来测试结果
代码如下:输出
<%
option explicit
dim array_action
'合法的模块名
array_action = array("list","add","add_form","modify","modify_form","del")
'
response.write(getref(action))
'检验参数是否合法
function action()
dim str : str = request.querystring("action")
action = array_action(0)
if arr_in(array_action,str) then action = str
end function
'操作部分----------------------
function list()
list = "显示列表信息"
end function
function add()
add = "执行添加操作"
end function
function add_form()
add_form = "显示添加表单"
end function
function modify()
modify = "执行修改操作"
end function
'------------------------------
'检测是否存在于数组
function arr_in(a,v)
arr_in = false
dim i
if isarray(a) then
for each i in a
if i = v then : arr_in = true : exit for : end if
next
end if
end function
%>
很多帖讨论ASP、PHP、.NET,到底哪个强,个人认为不是语言的问题,而是思想的问题,网站功能原理了解了,用什么语言写都一样,效率高不高、代码是否简洁明了,那就看自己的水平了。欢迎大家讨论!