การใช้ Zend Framework กับ Flex ตอนที่ 1

บทความนี้เป็นตอนหนึ่งในเรื่องของการใช้ Flex ในการพัฒนาเว็บแอพพลิเคชั่น ก่อนหน้านี้เมื่อผมต้องการให้ Flex Application ทำงานกับระบบฐานข้อมูลโดยผ่าน PHP ผมมักเลือกใช้บริการของ AMFPHP (http://amfphp.sourceforge.net/) ซึ่งก็ได้รับความสะดวกมากมายทีเดียว งานก็ราบรื่นดี ต่อมาได้นักพัฒนาของค่าย Adobe ไปออกแถลงข่าวร่วมกับทาง Zend บ่อยครั้ง ก็เริ่มสนใจลองมาทดสอบระบบกับ Zend ดู กลับพบว่าง่ายกว่าเดิม อีกทั้งไปพบข้อมูลนี้เข้าก็เลยเป็นการตอกย้ำว่าสิ่งที่ออกแบบมาให้ Flex ทำงานผ่าน AMF แทนที่จะใช้ HTTPService นั้นเป็นทางเลือกที่ถูกต้องแล้ว ซึ่งถ้าดูจากแผนภาพจะเห็นว่า Flex ร่วมกับ AMF จะมี Latent Time ต่ำมากเมื่อเทียบกับ AJAX (ผมใช้บ่อยมาก)



การพัฒนา

ขั้นตอนที่ 1 : ต้องติดตั้ง Zend Framework ก่อน โดย download ชุด library มาจาก http://framework.zend.com/download/amf ทำการแตกไฟล์ จะพบกับโฟลเดอร์เยอะแยะ ให้มองหาโฟลเดอร์ชื่อ Zend ภายในจะประกอบด้วย sub folder ดังภาพ ให้นำเอาโฟล์เดอร์ไปวางไว้ในตำแหน่งที่เราสามารถอ้างอิงได้จาก PHP code ที่เราจะพัฒนา





ขั้นตอนที่ 2 : สร้าง Class ใน PHP เพื่อเป็นตัวแทนข้อมูล ในตัวอย่างผมจะสร้าง MemberDAO class ขึ้นมาเพื่อเป็นตัวกลางระหว่างฐานข้อมูลกับ Zend ดังภาพ



จากภาพผมได้ทำการเชื่อมฐานข้อมูลกับ MemberDAO class และสร้าง Method ขึ้นมาสอง Method คือ

  • getAll()  ทำหน้าที่ดึงข้อมูลมาจากฐานข้อมูลแล้วส่งต่อไปให้ rowToObject () และส่งผลลัพธ์สุดท้ายในรูปแบบของ Array
  • rowToObject() ทำหน้าที่เปลี่ยนข้อมูลที่ได้จากฐานข้อมูลให้เป็น Object เพื่อที่ Zend จะสามารนำไปใช้งานต่อได้

ขั้นตอนที่ 3 : สร้าง PHP ส่วนที่เป็น Flex Interface หรือส่วนที่ึคอยรับความต้องการจาก Flex Application แล้วเีรียก MemberDAO มาทำงาน (การที่ผมแยกส่วนออกมาหลายส่วนเป็นสไตล์ของเขียน code ของผม ท่านอาจจะใช้แบบอื่้นก็ได้ตามถนัด ครับ)



code ชุดนี้่แบ่งได้เป็นสี่ส่วนไ้ด้แก่
ส่วนที่ 1 เป็นการเรียกใช้งาน Zend Library และ MemberDAO class ที่เราสร้างไว้
ส่วนที่ 2 เ็ป็นการ initial Zend  AMF Server Object ขึ้นมา
ส่วนที่ 3 แจ้งให้ Zend AMF Server ทราบว่าให้ไปเรียก MemeberDAO ของเรามาใช้งาน
ส่วนที่ 4 ตอบสนองต่อ request ที่ส่งมาจาก Flex Application

จากตรงนี้ท่านคงพอจะมองออกแล้วว่าหลักการทำงานเป็นอย่างไร เราสร้าง MemberDAO เพื่อเปลี่ยนข้อมูลติบจากฐานข้อมูลให้เป็น Object หรือรูปแบบที่ Zend AMF เข้าใจ แล้วเราสร้าง php code ขึ้นมาเพื่อรวมเอา Zend AMF และ MemberDAO ให้มารู้จักกันเพื่อคอยตอบคำถาม Flex Application ซึ่้งก็คงจะถามมาว่า "ขอรายละเอียดสมาชิกทุุีกคนหน่อยซิ"


ขั้นตอนที่ 4 : พัฒนา Flex Application ผมจะสร้าง Flex แบบง่าย ๆ ขึ้นมาเพื่อทำการส่ง request ไปยัง php ในขั้นตอนที่ 3 แล้วนำข้อมุลมาแสดงในรูปของตาราง


ข้ามมาดูส่วนที่ 3 ก่อน ผมสร้าง RemoteObject ซึ่งเป็น Component ของ Flex ที่ทำหน้าที่ติดต่อกับ Zend AMF Server ของเราที่อยู่บน Web Server  RemoteObject ต้องอาศัยช่องการสื่อสารซึ่งผมสร้างไว้ในส่วนที่ 2 คือ ChannelSet จะเห็นว่ามีการอ้างอิงถึง php code ที่สร้างไว้ในขั้นตอนที่ 3 สิ่งที่น่าสนใจในตอนที่ 3 ก็ืคือการอ้างอิงไปยัง Zend และ MemberDAO โดยใช้ "source" และ "destination"  รายละเอียดส่วนนี้ผมจะข้ามไปก่อนเพียงขอให้สังเกตุวิธีการเท่านั้นก่อน

เราได้มีการเีรียกใช้งานหรือส่ง request ไปโดยใช้ component ที่เรียกว่า "method" และบอกให้ Flex ทราบว่าจะเอาผลลัพธ์ไปแสดงโดยให้ DataGrid มารับช่วงต่อไป เมื่อ compile เสร็จแล้วนำไปเรียกใช้งานผ่านเว็บบราวเซอร์จะได้ดังภาพ



จากที่กล่าวมาจะเห็นว่า coding นั้นสั้นมากที่เดียว ท่านที่เคยใช้งาน AMFPHP มาก่อนก็จะเข้าใจได้ทันทีึว่ามันง่ายขึ้นเยอะ ทั้งนี้ก็เพราะว่า Zend และ Flex ได้ซ่อนความยุ่งยากต่าง ๆ ไว้ใน Library ของพวกเขาไว้หมดแล้วนั่นเอง

ความคิดเห็น