ทำความรู้จักกับ interface ที่ชื่อว่า iterator

ทำไมต้องมี interface iterator ก็เหมือนกับบทความก่อนหน้านี้ที่เราต้องการให้ object ที่เราสร้างขึ้นสามารถใช้งานฟังก์ชั่น count ได้เหมือนกับ array เราจะใช้ interface ที่ชื่อว่า countable ในตอนนี้เราก็เลยอยากจะให้ object ที่เราสร้างขึ้นสามารถใช้งาน foreach loop ดูบ้าง

ทบทวนเรื่อง interface กันก่อน ในการเขียน PHP แบบ Object-Oriented หรือ OOP เราจำเป็นต้องรู้จักการใช้งาน interface เพราะจุดประสงค์ของ interface คือการเป็นจุดเชื่อมต่อของ code 2 ส่วนถ้าเราไม่มี interface เข้ามาคั่นกลางเราจะไม่สามารถแยก 2 ส่วนนี้ออกจากกันได้ เช่นการที่เราใช้ interface iterator จะเป็นจุดเชื่อมต่อของ code 2 ส่วนคือคำสั่ง foreach(ซึ่งเป็นของ PHP เอง) และ object ของเรา ดังนั้นจะเห็นว่าถ้าเราอยากได้ object ตัวไหนทำงานกับ foreach ได้ เราก็แค่ implement interface ที่ชื่อว่า iterator แค่นี้เอง แล้ว iterator จะบอกเราเองว่า เราต้อง implement method หรือ function อะไรบ้าง (เราสามารถเอา object ของเราไปทำงานกับ foreach ได้โดยที่ไม่ต้องเข้าไปแก้ไข code ของ PHP นี่คือประโยชน์ของ interface)

คราวนี้ก็มาเริ่มต้นใช้งาน interface iterator โดยเริ่มจาก

ต่อจากนั้นให้ implement method 5 method นี้

เพราะฉะนั้นในรอบแรกจะเข้า

  • rewind
  • valid
  • current (ถ้ามีข้อมูล)
  • key(ถ้ามีข้อมูล)

หลังจากนั้นรอบอื่นๆ ก็จะเป็น

  • next
  • valid
  • current
  • key

จนรอบสุดท้ายก็จะทำงานแค่ 2 method เท่านั้น

  • next
  • valid

สุดท้ายเราก็สามารถใช้ obj ที่เกิดจาก Customer Class กับ foreach ได้แบบนี้

รับเขียนโปรแกรมและสอนเขียนโปรแกรมด้วย PHP
ติดต่อสอบถามรายละเอียดเพิ่มเติมได้ที่ 062-419-9498
หรือ E-mail: training@irobust.co.th
Posted in PHP

Leave a Reply

Your email address will not be published. Required fields are marked *