อาทิตย์, กุมภาพันธ์ 05, 2555
   
Text Size
ป้ายโฆษณา

Component Development Part 4 Adding Model

( 2 Votes )

             ในตอนที่ผ่านมาเราพูดถึง View ซึ่งเป็นส่วนที่นำเสนอข้อมูลแก่ผู้ใช้ (presentation) ในตอนนี้เราจะมาดูถึงส่วนสำคัญอีกส่วนหนึ่งคือ Model ซึ่งเป็นส่วนที่ทำหน้าที่เป็น Business Logic ซึ่งทำหน้าที่ในการจัดการข้อมูล (data processing) และส่วนของการจัดเก็บ การดึงข้อมูลมาจากที่เก็บข้อมูล ซึ่งอาจจะเป็นฐานข้อมูลหรือ ไฟล์ก็ได้ ตามที่ทราบมาแล้วว่าใน Joomla! 1.5 Model-View-Controller เราจะเก็บ model class ไว้ใน folder Models ของ Component Root โดยมีการตั้งชื่อ Class ของ Model ในทำนองเดียวกับ Controller และ View คือ [COMPONENT_NAME]Model[ENTITY_NAME] เช่น BookmanModelBooks และ BookmanModelBook เป็นต้น

             ในการออกแบบและ Implement Model นั้นมีสิ่งที่เราควรคำนึงถึงอย่างหนึ่งว่า Model จะทำงานได้โดยอิสระ ไม่มีความสัมพันธ์กับ Controller และ View นั้นคือใน Class ของ Model ทุกๆ Method จะไม่มี Object ของ View หรือ Controller อยู่เลย ซึ่งเป็นส่วนหนึ่งของการใช้งาน Model-View-Controller นั่นคือเราสามารถใช้งาน Model ได้เสมอแม้ View หรือ Controller จะเปลี่ยนไปยังไงก็ตาม

             จาก BookmanViewBooks ในตอนที่แล้วใน Method display มีกาีรเรียกใช้ Model Object โดยใช้ method ชื่อ getModel() ซึ่งเป็นการ load default Model เพื่อมาใช้งาน ในตอนนี้เราจะมาดู class BookmanModelBooks กันนะครับ

ฺBooks Model

บรรทัดที่ 6 เรา import ไฟล์ model เพื่อความแน่นอนว่าเราได้ load JModel เพื่อใช้งาน

บรรทัดที่ 8 class BookmanModelBooks สืบทอดจาก JModel ซึ่งเป็น base class สำหรับ model ใน Joomla

บรรทัดที่ 10 เราประกาศตัวแปรสำหรับการเก็บข้อมูลรายการหนังสือ เป็นตัวแปรแบบ Private สำหรับ Joomla

บรรทัดที่ 14 เราตรวจสอบว่ามีการ load ค่าให้กับตัวแปร $_books แล้วหรือไม่

บรรทัดที่ 15 ในกรณีที่เรายังไม่เคย load ข้อมูลรายการหนังสือ เราจะทำการ load รายการโดยการ load จากฐานข้อมูล

บรรทัดที่ 16 ทำการ load object สำหรับการเชื่อมต่อกับฐานข้อมูล โดยการใช้งาน JFactory ซึ่ง implement FACTORY pattern ใน Joomla! 1.5

บรรทัดที่ 17 กำหนด Query ให้กับ database object ไม่ต่่างกับใน Joomla 1.0

บรรทัดที่ 17 ทำการ load ข้อมูลรายการหนังสือ

 

            หากทุกท่านสังเกตุ และเปรียบเทียบกับการเขียน Component ของ Joomla! 1.0 ในส่วนของฐานข้อมูลจะเห็นว่าใน Joomla! 1.0 เราจะต้องทำการประกาศการใช้งานตัวแปร global ชื่อ $database (global $database) แต่ใน Joomla! 1.5 เราจะไม่เจอรูปแบบนี้อีกเนื่องจากมันจะถูกแทนที่ด้วย JFactory ซึ่งเรียกว่าเป็น Class ที่ทำหน้าที่เหมือนโรงงานในการผลิต Object เช่นเราสามารถใช้ JFactory->getUser() เพื่อ load ข้อมูลของผู้ใช้งาน Web Site ได้โดยไม่ต้องมีการประกาศ global เหมือนใน Joomla! 1.0 อีก

            ใน Joomla 1.5 นอกจากเราจะมี Database Connection โดยการ load จาก JFactory แล้วเรายังมี class JTable ซึ่งเหมือนกับ mosDBTable ใน Joomla! 1.0 ด้วยโดยมันจะทำหน้าที่ที่เรียกว่า CRUD (CREATE READ UPDATE DELETE) โดยเราเพียงแต่ระบุชื่อของ Table ที่เราต้องการเท่านั้น โดย JTable จะมี methods ที่ช่วยเราจัดการไว้แล้วโดยไม่ต้องเขียนใหม่ หรือโดยที่เราไม่ต้องเขียน Query แบบ method ด้านบนก็ยังได้ โดยเราสามารถ extends JTable ได้และเก็บไว้่ใน folder Tables สมมุติว่าเรามี class ชื่อ TableBook ซึ่ง extends จาก JTable เราสามารถ load class ของเราได้ดังนี้

                   JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');

                   $table = JTable::getInstance('book','Table');

           หลังจากผ่านมาสี่ตอนคิดว่าท่านผู้อ่านคงพอจะปะติตดปะต่อความสัมพันธ์ระหว่าง Model View Controller และวิธีการในการเขียนในรูปแบบ MVC บ้างแล้วในที่นี้ ผู้เขียนขอสรุปขั้นตอนในการพัฒนา Component คร่าวๆ ดังนี้ คือ

  1. ทำการ Get และสรุปความต้องการของผู้ใช้ (Requirements)
  2. ออกแบบฐานข้อมูล เพื่อให้ได้ ER Diagram โดยอย่างน้อยควรทำการออกแบบตามกฎการ Normalization ข้อสองเป็นอย่างน้อย
  3. เมื่อเราได้ Entity แลัวเราก็จะสามารถสรุปได้ว่า แต่ละ Entity มี task อะไรบ้่าง มี View อะไีีรบ้างซึ่งอาจจะมีหรือไม่มีก็ได้ เช่น task save เป็นต้น
  4. สร้างไฟล์และ folder ตามโครงสร้างของ Joomla MVC pattern
  5. สร้างฐานข้อมูลสำหรับ Component ของเรา
  6. สร้างไฟล์ XML Installation (จะกล่าวถึงในบทความต่อไป)
  7. สร้าง Zip ไฟล์ และทำการติดตั้งผ่าน Joomla Backend
  8. สร้าง Menu สำหรับ Component ของเรา
  9. ทำการพัฒนา Componet และทดสอบ
  10. แก้ไขไฟล์ XML และสร้าง Zip ไฟล์ใหม่
  11. ทดสอบการติดตั้ง และทดสอบการใช้งาน Component

อันนี้เป็นขั้นตอน คร่าวๆ นะครับและสิ่งที่เราจะต้องเรียนรู้เพื่อให้สามารถพัฒนา Joomla! 1.5 Component ได้อย่างมีประสิทธภาพนั้น ยังมีอีกหลายส่วน ซึ่งทางผู้เขียนจะนำมาเสนอในบทความต่อๆ ไปยังไงโปรดติดตามและให้กำลังใจกันบ้างนะครับ

 

JoomlaWatch Stats 1.2.8b_12-dev by Matej Koval
Restore Default Settings