ฉันกำลังศึกษา C++ เมื่อเร็ว ๆ นี้และเห็นตัวชี้ฟังก์ชัน เนื่องจากฉันเคยทำงานกับ ASP มาก่อน ฉันสงสัยว่ามีตัวชี้ฟังก์ชันดังกล่าวใน ASP หรือไม่ ฉันค้นหาใน Baidu และพบว่าไม่มีการแนะนำเกี่ยวกับแง่มุมนี้มากนัก ดังนั้นฉันจึง ดูคู่มือ VBScript แล้วไม่พบ ฉันผิดหวังและพบฟังก์ชัน GetRef ฉันอ้างอิงคำอธิบายของฟังก์ชัน GetRef ในคู่มือ
ส่งกลับการอ้างอิงถึงขั้นตอนที่สามารถผูกเหตุการณ์ได้
ตั้งค่า object.eventname = GetRef (procname)
พารามิเตอร์
วัตถุ
ที่จำเป็น. ชื่อของวัตถุที่เกี่ยวข้องกับเหตุการณ์
ชื่อเหตุการณ์
ที่จำเป็น. ชื่อของเหตุการณ์ที่จะผูกไว้กับฟังก์ชัน
ชื่อโครงการ
ที่จำเป็น. สายอักขระนี้ประกอบด้วยชื่อของขั้นตอนย่อยหรือฟังก์ชันที่เกี่ยวข้องกับเหตุการณ์
แสดงให้เห็น
ฟังก์ชัน GetRef สามารถใช้เพื่อเชื่อมโยงขั้นตอน VBScript (ฟังก์ชันหรือย่อย) กับเหตุการณ์ใดๆ ที่มีอยู่ในหน้า DHTML (HTML แบบไดนามิก) โมเดลออบเจ็กต์ DHTML ให้ข้อมูลเกี่ยวกับเหตุการณ์ต่างๆ ที่มีอยู่สำหรับออบเจ็กต์ต่างๆ
ในภาษาสคริปต์และการเขียนโปรแกรมอื่นๆ ฟังก์ชันที่ได้รับจาก GetRef เรียกว่าตัวชี้ฟังก์ชัน กล่าวคือ ชี้ไปยังที่อยู่ของขั้นตอนที่จะดำเนินการเมื่อมีเหตุการณ์ที่ระบุเกิดขึ้น
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ฟังก์ชัน GetRef:
คัดลอกรหัสรหัสดังต่อไปนี้:
<ภาษาสคริปต์=VBScript>
ฟังก์ชัน GetRefTest()
สลัวสแปลช
Splash = GetRefTest เวอร์ชัน 1.0 & vbCrLf
สแปลช = สแปลช & Chr (169) และบริษัทของคุณ 1999
MsgBox สแปลช
ฟังก์ชันสิ้นสุด
ตั้งค่า Window.Onload = GetRef (GetRefTest)
</สคริปต์>
อาจหมายความว่าใช้สำหรับการเชื่อมโยงเหตุการณ์ เนื่องจากฉันไม่ค่อยรู้เกี่ยวกับเหตุการณ์ใน ASP มากนัก ฉันจะไม่พูดคุยมากเกินไปเกี่ยวกับความสัมพันธ์ระหว่าง GetRef กับเหตุการณ์ที่นี่ ที่นี่เราศึกษาเฉพาะการใช้ GetRef ในแอปพลิเคชันการพัฒนาเว็บเท่านั้น
ใน PHP นั้น PHP ไม่รองรับพอยน์เตอร์ ดังนั้นจึงไม่สามารถใช้เทคโนโลยีพอยน์เตอร์ฟังก์ชันได้ PHP รองรับสิ่งที่เรียกว่าตัวแปรฟังก์ชัน ซึ่งสามารถกำหนดฟังก์ชันให้กับตัวแปรได้ และฟังก์ชันของพวกมันจะคล้ายกับพอยน์เตอร์ของฟังก์ชัน
ตัวอย่างที่ง่ายกว่า:
คุณสามารถทำได้ใน PHP
คัดลอกรหัสรหัสดังต่อไปนี้:
<?php
$funcname = cutstr;
เสียงสะท้อน $funcname();
ฟังก์ชั่น cutstr() {
ฟังก์ชั่นส่งคืน;
-
-
ด้วย GetRef นั้น ASP ยังสามารถใช้ฟังก์ชันที่คล้ายกับข้างต้นได้:
-
funcname สลัว
funcname = cutstr
การตอบกลับเขียน (getref (funcname))
ฟังก์ชั่น cutstr()
cutstr = ฟังก์ชัน
ฟังก์ชั่นสิ้นสุด
-
การใช้งานจริง:
เมื่อทำโปรเจ็กต์การจัดการเบื้องหลัง เช่น การเพิ่ม ลบ การแก้ไขข่าวสาร และการดำเนินการอื่นๆ จะได้รับการประมวลผลในหน้าเดียวกัน โดยทั่วไป เราจะแทรกการดำเนินการของฟิลด์ที่ซ่อนอยู่ในแบบฟอร์ม หรือการดำเนินการของพารามิเตอร์ URL และกำหนดขั้นตอนของการดำเนินการ การดำเนินการขึ้นอยู่กับมูลค่าของการกระทำ มักจะเขียนดังนี้:
เลือกกรณี request.querystring (การกระทำ)
กรณีเพิ่ม: 'ส่วนรหัสที่จะดำเนินการ....
case modified : 'ส่วนโค้ดที่จะดำเนินการ....
สิ้นสุดการเลือก
หรือใช้ if อย่างอื่น
การใช้ตัวแปรฟังก์ชันสามารถทำให้โค้ดกระชับและชัดเจนยิ่งขึ้น นี่คือตัวอย่างที่สมบูรณ์ที่แนบมาด้วย ซึ่งเป็นการดำเนินการที่ใช้กันทั่วไปในเบื้องหลัง แก้ไข ลบ เพิ่ม
คุณสามารถใช้ ?action=××× เพื่อทดสอบผลลัพธ์
คัดลอกรหัสรหัสดังต่อไปนี้:
-
ตัวเลือกที่ชัดเจน
array_action สลัว
'ชื่อโมดูลกฎหมาย
array_action = array (รายการ, เพิ่ม, add_form, แก้ไข, แก้ไข_form, del)
'เอาท์พุต
การตอบสนองเขียน (getref (การกระทำ))
'ตรวจสอบว่าพารามิเตอร์นั้นถูกกฎหมายหรือไม่
ฟังก์ชั่นการกระทำ ()
dim str : str = request.querystring(การกระทำ)
การกระทำ = array_action (0)
ถ้า arr_in(array_action,str) ดังนั้น action = str
ฟังก์ชั่นสิ้นสุด
'ส่วนการดำเนินงาน----------------------
รายการฟังก์ชัน()
list = แสดงรายการข้อมูล
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นเพิ่ม()
เพิ่ม = ดำเนินการเพิ่ม
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่น add_form()
add_form = แสดงแบบฟอร์มเพิ่ม
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นแก้ไข ()
แก้ไข = ดำเนินการแก้ไข
ฟังก์ชั่นสิ้นสุด
-
'ตรวจสอบว่ามีอยู่ในอาร์เรย์หรือไม่'
ฟังก์ชั่น arr_in (a, v)
arr_in = เท็จ
สลัวฉัน
ถ้า isarray(a) แล้ว
สำหรับแต่ละฉันใน
ถ้า i = v ดังนั้น : arr_in = true : ออกสำหรับ : end if
ต่อไป
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
-
หลายๆ โพสต์พูดถึง ASP, PHP และ .NET อันไหนดีกว่ากัน ส่วนตัวผมคิดว่าไม่ใช่ปัญหาด้านภาษา แต่เป็นปัญหาเรื่องการคิด ภาษาที่คุณใช้เขียนนั้นมีประสิทธิภาพหรือไม่ โค้ดนั้นกระชับและชัดเจนหรือไม่? ทุกคนยินดีที่จะหารือ!