PHP - จัดเก็บฟังก์ชันต่างๆ เพื่อเรียกใช้ในภายหลัง

โดยหลักการแล้วสิ่งที่ฉันต้องการคือรายการฟังก์ชันที่สามารถเรียกใช้ได้ในภายหลัง ฟังก์ชั่นจะถูกเลือกขึ้นอยู่กับการป้อนข้อมูลของผู้ใช้ จากนั้นผู้ใช้จะถูกสอบถามถึงพารามิเตอร์สำหรับฟังก์ชันนั้น สิ่งนี้จะเกิดขึ้นหลายครั้งจนกว่าผู้ใช้จะป้อนข้อมูลว่าต้องการให้ฟังก์ชันทั้งหมดทำงานต่อกัน

ฉันไม่สามารถมีแบบฟอร์มเดียวได้เนื่องจากไม่มีจำนวนขั้นตอนที่แน่นอน จำนวนฟังก์ชั่นขึ้นอยู่กับผู้ใช้ พวกเขาจะป้อนฟังก์ชันที่ต้องการจนกว่าพวกเขาจะป้อนว่าต้องการให้ฟังก์ชันทั้งหมดทำงานตามลำดับที่ป้อน

เช่น. อินพุต - การตอบสนอง ผู้ใช้จะให้ข้อมูลอินพุต -- วิ่ง....... ขึ้นอยู่กับอินพุต พวกเขาจะถูกถามถึงพารามิเตอร์ไกลแค่ไหนและเร็วแค่ไหน? -- 100 และ 10......ฟังก์ชันเริ่มทำงาน (100,10)

อินพุทอื่น -- ตะโกน.........ตะโกนอะไร? -- สวัสดี........ฟังก์ชันกลายเป็น ตะโกน(สวัสดี)

อินพุตถัดไป --- กระโดด ...... สูงแค่ไหน? -- 8............ ฟังก์ชั่นจะเป็นการกระโดด(8)

หลังจากนั้นเมื่อผู้ใช้ป้อนข้อมูล "เล่น" ควรดำเนินการต่อไปนี้ตามลำดับ: วิ่ง (100,10), ตะโกน (สวัสดี), กระโดด (8)

ขอบคุณล่วงหน้า :)


person QLN33    schedule 02.01.2011    source แหล่งที่มา
comment
คุณต้องการให้สิ่งนี้เกิดขึ้นแบบโต้ตอบหรือไม่? เช่น: คุณกำลังพยายามเขียน parser หรือไม่?   -  person John Parker    schedule 02.01.2011
comment
เป็นคำถามที่มีรูปแบบไม่ดีมาก เป็นเว็บแอปพลิเคชันหรือคอนโซลแอปพลิเคชันปกติหรือไม่ นอนที่นี่มีประโยชน์อะไร? ทำไมทำหลายขั้นตอนไม่ใช่แบบเดียว?   -  person Your Common Sense    schedule 02.01.2011
comment
ฉันจะบอกว่าอินเทอร์เฟซผู้ใช้จะซับซ้อนกว่าการเรียกใช้ฟังก์ชันทั้งหมดของคุณตามลำดับ เพียงจัดเก็บอินพุตของผู้ใช้ทั้งหมดในอาร์เรย์เซสชัน จากนั้นวนซ้ำ รับฟังก์ชันและพารามิเตอร์ จากนั้นจึงเรียกใช้   -  person Your Common Sense    schedule 02.01.2011
comment
ถูกต้อง ขอบคุณ! แล้วถ้าเป็นแอปพลิเคชั่นคอนโซลล่ะ? แล้วคุณจะทำยังไงล่ะ?   -  person QLN33    schedule 02.01.2011


คำตอบ (1)


ในขั้นตอนแรกคุณสามารถจัดเก็บชื่อฟังก์ชันไว้ในตัวแปร จากนั้นใช้ call_user_func($funcName, $arg1, $arg2, ..) เพื่อเรียกชื่อฟังก์ชันพร้อมกับอาร์กิวเมนต์จากขั้นตอนที่สอง

และถ้าคุณพยายามเรียกเมธอดในคลาส ไม่ใช่โกลบอลฟังก์ชัน คุณต้องเก็บเมธอดนั้นไว้เป็น array($instance, 'methodName') หรือ array('className', 'methodName') สำหรับเมธอดแบบสแตติก

person Seldaek    schedule 02.01.2011