Triển khai ORM bằng PhpDataMapper

trong danh mục PHP, Web Programming

phpdatamapper-logo

Hôm nay mình sẽ giới thiệu với các bạn một tool khá hay phục vụ cho công việc coding PHP của các bạn, đó là PhpDataMapper.
Vậy nó là cái gì?

Trước tiên mình sẽ nói về ORM (Object-Relational Mapping), ORM là cơ chế cho phép bạn xây dựng 1 ứng dụng(cụ thể là OOP-hướng đối tượng) mà thao tác trên table trong database được đóng gói lại trong 1 business class (vd: table User tương ứng với class User), và không phải quan tâm nhiều đến việc viết query cho mỗi lần truy xuất DB. Kỹ thuật ORM thích hợp trong môi trường phát triển một hệ thống website mà trong đó cần tham gia nhiều thành viên trong nhóm code và cho các hệ thống quy mô Enterprise.

Hiện trên thị trường có 2 open source khá là nổi khi nhắc đến ORM trên nền PHP đó là Doctrine và Propel. 2 thằng này khá nặng về tài nguyên, không tốt cho Performance và việc cài đặt cũng khá phức tạp đối với một số bạn vì hạn chế về hosting…do đó Phpdatamapper đã được tạo ra. PHPDataMapper là công cụ cho phép tích hợp kỹ thuật ORM vào hệ thống của bạn với mức độ trung bình, cho một nhóm phát triển 1 ứng dụng không cần lên tới vài ngàn (hệ thống như vậy không nhiều), và phpdatamapper phù hợp cho một số nhóm nhỏ coder.

Phpdatamapper là opensource viết bằng PHP5 do đó php5 là yếu tố tiên quyết. Về chức năng thì cũng chứa hầu hết các kỹ thuật cơ bản cho 1 ORM đó là kế thừa class mapper, khởi tạo, sử dụng cở chế OOP để thao tác trên property của đối tượng (còn việc truy xuất database thì class sẽ tự lo nhờ cơ chế ORM), cũng có thể tự viếc query trong một số trường hợp bạn cần…và đặc biệt khá đơn giản..chỉ cần include là chạy..không cần setup gì thêm nhiều.

Bạn vào đây để biết rõ các chức năng của phpdatamapper:

http://phpdatamapper.com/goals/

Hy vọng các bạn sẽ thấy công cụ này hữu ích cho các project php về sau.

6 bình luận

  1. TMQuang says:

    Chào Tuấn!
    Đọc khá nhiều bài viết của Tuấn, và cũng đã có nhiều comment để lại.
    Tới cái bài này, thấy hay thật, giống cái linq bên ASP.Net lắm. Nhưng nói thật cái PhpDataMapper này không biết xài từ đâu, cũng ko có demo nữa. Tuấn có thể viết một bài tutorial chia sẽ cách làm với cái này ko

    [Reply]

    admin Reply:

    Vì hiện tại đang tự phát triển và sử dụng Framework do mình viết nên cũng không gắn thêm ORM cho ứng dụng vì 2 lý do: Thêm 1 Abstract Layer ~ Thêm Overhead và khó mà Optimize Query vì nếu đã xài ORM thì sẽ làm cho Developer “lười”, động tí là class và call method nên mình không thích cách này.
    Đối với các ứng dụng bình thường thì dùng cách này thì hiệu quả hơn nhiều. Còn ví dụ thì google có mà đầy ^^, chúc vui !

    [Reply]

  2. TMQuang says:

    Trả lời nhanh ghê. Uhm, mình cũng tự phát triễn 1 cái FW để tự xài, mô hình MVC đàng hoàng 😀
    Nhưng cái MVC của mình nói chung là củ chuối lắm, chỉ giải quyết vấn đề cơ bản thôi. Thấy cái MVC của ASP.Net có thể tích hợp LINQ vào, nên ham hố, muốn tích hợp cái PHPDataMapper này vào cái FW tự chế xem hoạt động thế nào. Ổn thì xài, ko thì bỏ.
    Trang chủ không có demo, hướng dẫn có vẻ sơ xài quá 🙁

    [Reply]

    tuantm Reply:

    Mình thấy nhiều framework hiện này cũng đã có sẵn lớp này rồi thì phải, ORM này chỉ thích hợp cho những bạn tự viết FW đúng không nhỉ. 🙂

    [Reply]

  3. muoidv says:

    cảm ơn anh đã chia sẻ nhiều bài viết hay

    [Reply]

  4. Quả thật mình vẫn chưa hiểu lắm về thằng ORM, mình thấy dùng nó cũng đâu khác khi không dùng.

    [Reply]

Gởi bình luận