ตะขออะไร [ปิด]


15

ฉันพบคำนี้ในบทความการเขียนโปรแกรมต่าง ๆ อย่างไรก็ตามฉันไม่เข้าใจว่ามันคืออะไรและจะใช้งานอย่างไร ดังนั้นฉันแค่อยากรู้ว่าแนวคิดของ hooks คืออะไร; ถ้ามีใครสามารถเชื่อมโยงฉันกับตัวอย่างโดยเฉพาะอย่างยิ่งในบริบทของการพัฒนาเว็บมันจะดีมาก


วิธีเบ็ดเป็นวิธีที่เป็นรูปธรรมในระดับนามธรรมที่สามารถแทนที่โดย subclasses แต่มันมีพฤติกรรมเริ่มต้นในระดับนามธรรม
gal007

คำตอบ:


18

คำตอบของฉันเกี่ยวข้องกับ WordPress ซึ่งเขียนด้วย PHP แต่นี่เป็นกลไกการพัฒนาทั่วไปดังนั้นจึงไม่ควรทำเรื่องสำคัญแม้ว่าคุณจะใส่ 'python' ในชื่อคำถามของคุณก็ตาม

หนึ่งตัวอย่างที่ดีของการใช้งานของตะขอบังเอิญในการพัฒนาเว็บเป็นWordPress' ตะขอ

พวกเขามีชื่ออย่างเหมาะสมในการที่พวกเขาอนุญาตให้วิธีการ 'ขอเป็น' บางจุดของการดำเนินการของโปรแกรม

ตัวอย่างเช่นwp_headคือ 'การกระทำ' ที่ถูกปล่อยออกมาเมื่อธีม WordPress ถูกแสดงผลและเป็นส่วนหนึ่งที่แสดงส่วนที่อยู่ภายใน<head>แท็ก สมมติว่าคุณต้องการเขียนปลั๊กอินที่ต้องการสไตล์ชีทสคริปต์หรือสิ่งที่ปกติจะอยู่ในแท็กเหล่านั้น คุณสามารถ 'ขอ' การกระทำนี้ได้โดยการกำหนดฟังก์ชั่นที่จะเรียกเมื่อการกระทำนี้ถูกปล่อยออกมา สิ่งที่ต้องการ:

add_action('wp_head', 'your_function');

your_function() อาจเป็นอะไรที่ง่ายเหมือน:

function your_function() {
    echo '<link rel="stylesheet" type="text/css" href="lol.css" />';
}

ตอนนี้เมื่อ WordPress ปล่อยการกระทำนี้โดยทำสิ่งใดสิ่งdo_action('wp_head');หนึ่งมันจะเห็นว่าyour_function()ถูก'ติด' เข้ากับการกระทำนั้นดังนั้นมันจะเรียกใช้ฟังก์ชันนั้น ( และส่งต่อข้อโต้แย้งใด ๆ )

เรื่องสั้นแบบสั้น: ช่วยให้คุณเพิ่มฟังก์ชันการทำงานเพิ่มเติม ณ จุดเฉพาะของการใช้งานโปรแกรมโดย 'เชื่อมต่อ' จุดเหล่านั้นในกรณีส่วนใหญ่โดยการกำหนดฟังก์ชันการเรียกกลับ


2

ทั้งนี้ขึ้นอยู่กับพื้นหลังของบุคคลที่ถามบางครั้งคำตอบสำหรับคำถามนี้อาจเป็นเรื่องง่ายเหมือน hooks มักเป็นอีกคำหนึ่งสำหรับตัวจัดการเหตุการณ์ซึ่ง Blaenk ให้คำอธิบายที่ดีเยี่ยม

นอกจากนี้ยังมีการใช้วลีนี้ว่าเมื่อคุณฉีดเหตุการณ์หรือรหัสเข้าสู่กระบวนการที่เป็นอย่างอื่นไม่ได้มีเหตุการณ์เช่นไฝตัวอย่างเช่น


ขอบคุณบิลล์โมลดูเหมือนแนวคิด. NET ซึ่งเป็นคนต่างด้าวโดยสิ้นเชิงกับฉันคุณช่วยชี้ให้ฉันเห็นสิ่งที่ไพทอนหรือ php หรือบางสิ่งที่กว้างกว่า
Rasmus

น่าเสียดายที่ฉันไม่ได้ใช้สองสิ่งนี้มากพอที่จะอ้างความเชี่ยวชาญ แต่ถ้าฉันอ่านอย่างถูกต้องฉันเชื่อว่าstackoverflow.com/questions/156230/…เป็นความคิดที่คล้ายกันที่ถูกกล่าวถึง แต่ตัวตุ่นสามารถรวบรวมชุดประกอบได้ ไดรเวอร์มินิพอร์ตเป็นอีกที่หนึ่งที่ใช้วลี hook ในบางครั้ง ประเด็นของฉันคือมากกว่านั้นคำศัพท์ "hook" สามารถใช้อีกวิธีหนึ่งได้ในเทคโนโลยี MS รุ่นเก่าอย่างไรก็ตามบางทีการใช้ครั้งที่สองก็ไม่ได้ใช้กับไพ ธ อนเช่นกัน
Bill
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.