การลงทะเบียนวิธีการเรียนเป็นตะขอโทรกลับ


16

ฉันไม่แน่ใจว่าฉันทำอย่างถูกต้องหรือไม่

ตามที่ฉันเข้าใจ

ถ้าฉันมีคลาส foo และแถบวิธีคงที่ฉันสามารถลงทะเบียนเป็น callback โดยผ่านอาร์เรย์array("foo","bar")เป็นชื่อฟังก์ชั่น

ถ้าผมมีตัวอย่างของการเรียนใน $ foo array($foo,'bar')หนึ่งและต้องการที่จะเรียกบาร์วิธีการที่ฉันผ่านอาร์เรย์

หากฉันต้องการลงทะเบียนการกระทำภายในชั้นเรียนนั้นจะใช้งานได้array($this,'bar')หรือไม่


3
การทดสอบจะไม่เร็วกว่าการถามคำถามหรือไม่ ;) ใช่คุณสามารถทำได้
fuxia

2
การทดสอบสามารถช่วยได้ แต่บางครั้งคุณก็ต้องการความเห็นเช่น ฉันคิดว่ามันโอเคที่จะจริงถามคำถามและมีกฎนี้ตั้งคำถามแรงจูงใจตรวจการณ์ ... :)
hakre

คำตอบ:


11

หากฉันต้องการลงทะเบียนการกระทำภายในชั้นเรียนนั้นจะใช้งานได้array($this, 'bar')หรือไม่

ใช่มันใช้งานได้ $thisเอกสารจะหมายถึงตัวอย่างที่เป็นรูปธรรมที่จำเป็นสำหรับการโทรกลับ นั่นเหมือนกับ$fooตัวอย่างที่คุณให้ มันแค่$thisพิเศษกว่านิดหน่อย แต่มันก็แสดงให้เห็นเหมือนเดิมและใช้งานได้อย่างไม่มีที่ติกับการเรียกกลับใน PHP

เพิ่มเติม:

ถ้าฉันมีคลาส foo และแถบวิธีคงที่ฉันสามารถลงทะเบียนเป็น callback โดยผ่านอาร์เรย์array("foo","bar")เป็นชื่อฟังก์ชั่น

ใช่คุณสามารถทำได้สำหรับฟังก์ชั่นแบบคงที่ที่คุณสามารถเขียนมันเป็นสตริงแทนของอาร์เรย์เช่นกัน: foo::barดูCallbacksเอกสาร อาจจะมีประโยชน์


1

สำหรับวิธีการคงที่คุณสามารถทำได้:

['foo','bar'] 

เมื่อต่อไปนี้จะช่วยให้'บาร์' class คงไม่ได้กำหนด :

foo::bar

ตัวอย่าง - เมื่อระบุ $ control_callback สำหรับ wp_add_dashboard_widget

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.