DAO หรือ data access object เป็นแนวคิดของทาง Microsoft (เจ้าใหญ่แห่งวงการ) เพื่อให้ทาง นักพัฒนาระบบ (Programmer) เข้าใช้งาน Database ได้โดยง่าย กล่าวคือ การใช้ DAO คือการแยกส่วนการทำงานออกเป็น 2 ส่วน คือ  1. ส่วนแรกจะทำการ Query ข้อมูล ตรงไปที่ฐานข้อมูลของเรา และอีกส่วนคือการเรียกใช้งาน Function ของส่วนแรกที่ทำการ Query ไปยังฐานข้อมูลของเรา

                  เราใช้ DAO เพื่อแยก Data Layer ออกจาก Business Layer ให้ชัดเจน จะทำให้การพัฒนาระบบของเราดูง่ายขึ้นและสะดวกต่อการใช้งาน หรือจะพูดได้อีกอย่างนึงว่า DAO จะค่อยเป็นตัวกลางในการเชื่อมข้อมูลระหว่าง ฐานข้อมูลเรากับหน้าจอที่ใช้ในการแสดงผลข้อมูล เช่น หากเรามีฐานข้อมูลที่เก็บข้อมูลสินค้าเอาไว้ แล้วให้เราก็ทำการ ดึงข้อมูลมาแสดงผลที่หน้าจอของเรา

                  ทำได้ 2 แบบ
                  แบบที่ 1 คือเรียกมาแสดงผลตรงๆจากฐานข้อมูลเลย (โดยการดึงข้อมูลสินค้ามาแสดงแบบปกติ เขียนโปรแกรมเพื่อติดต่อฐานข้อมูลโดยตรง)
                  แบบที่ 2 ทำผ่านตัว DAO ก็ได้จะว่า เราทำการสร้าง Function ที่ทำการดึงข้อมูลสินค้าเอาไว้ Function (โดย Function นี้ก็จะทำการดึงข้อมูลสินค้าแบบปกติ) แล้วหน้าแสดงผลหน้าจอของเราก็ทำการเรียกผ่าน Function ที่เราได้สร้างขึ้นไว้ ก่อนหน้านี้ เท่านี้เราก็จะได้ข้อมูลสินค้ามาแสดงที่หน้าจอ  (ก็เปรียบได้ว่า DAO ทำตัวเองเป็น Interface ให้ระหว่างหน้าจอที่แสดงผล กับ ฐานข้อมูลของเรานั่นเอง!!!)

                  แต่!!! หากเราไม่ได้สร้าง ตัว Function ไว้ในรูปแบบ DAO แล้วมีการ ดึงข้อมูลสินค้าขึ้นมาบ่อยๆ ถ้าเป็นวิธีปกติ เราก็จะทำการ Copy Code มาแปะไว้เพื่อดึงข้อมูลทุกครั้ง แต่ถ้าทำผ่านรูปแบบ DAO เราก็แค่เรียกใช้ Function เดิมที่เราเคยเขียนเพื่อดึงสินค้า ทำให้ช่วยในการพัฒนาระบบเป็นไปได้ง่ายและเป็นระเบียบ
                 
                 และนั่นคือข้อดีของการใช้รูปแบบของ DAO และ ก็เราสามารถแยกการทำงานในแต่ส่วนงานเขียนโปรแกรมออกจากกันได้ คือ ผู้ที่เขียน Business Code ก็ไม่จำเป็นต้องรู้เกี่ยวกับ ฐานข้อมูลหรือการเขียน คำสั่ง Query มีหน้าที่แค่เรียกใช้งาน Function ของ DAO มาทำงาน Function พื้นฐานที่ควรจะมีในทุกๆ DAO ได้แก่ save,update,delect,selectById,selectAll เช่น ถ้าจะทำการบันทึกข้อมูลสินค้าลงฐานข้อมูล จะเขียน Code ในรูปแบบ productDao->save(product) เท่านี้ก็สามารถสั่งบันทึกลงฐานข้อมูลได้แล้วครับ (ง่ายเกินไปหรือป่าว ^^) โดยไม่จำเป็นต้องรู้เกี่ยวกับคำสั่ง SQL (ถ้ามีคนทำรอไว้ให้นะ…ถ้าทำคนเดียวก็เขียนทั้งหมด)

                จากแนวคิดที่กว่าวมาทั้งหมดนั้น เราก็ได้คิดสร้าง DAO ขึ้นมาเอง ในภาษา PHP ที่เราพัฒนาขึ้นมาเอง ไม่ได้ดีเด่นอะไรมากนักหรอครับ แต่ทำงานร่วมกันเป็นทีมทำได้ง่ายขึ้น รูปแบบหรือวิธีการของเรา คือ

                1.เราทำการสร้าง data class ต่อ 1 table ในฐานข้อมูล
                 class product()
                   {
                     public $productID;
                     public $config=array(‘primary’=>’productID’)
                     public $productName;
                     public $productPrice;
                   }
 
                2.dao class ต่อ 1 table ในฐานข้อมูล
                class ProductDao()
                {
                  public function save($object)
                    {
                       $this->save_object($object);
                    }
                 }
                                                            
                3.การใช้งาน DAO เราก็ทำการเรียก class data ขึ้นมาก่อน
                $o_product=new product();
                  $o_product->productName=”ชื่อสินค้า”;
                  $o_product->productPrice=”1000”;

                  และทำการเรียก class Dao ขึ้นมา
               $dao_product=new ProductDao();
                 $dao_product->save($o_product);
              เพียงเท่านี้เราก็ทำการบันทึกข้อมูลได้แล้วละครับ…

              หวังว่าบทความนี้ก็น่าจะมีประโยชน์อยู่บ้างไม่มากก็น้อย และผมเขียนบทความนี้ขึ้นมาเองทำให้อาจจะเขียนได้ไม่ดีมากนักและหวังว่าจะเขียนให้ดีกว่านี้ในบทความต่อๆไป
              ข้อมูล DAO เพิ่มเติมได้ที่ http://en.wikipedia.org/wiki/Data_Access_Object