CakePHP

CakePHP คือ เฟรมเวิร์กที่เขียนขึ้นโดยใช้ภาษา PHP ซึ่งเป็นตัวช่วยสำหรับพัฒนาเว็บโดยใช้ภาษา PHP และถูกออกแบบบนพื้นฐาน MVC (Model, View, Controller)
PHP Framework
PHP Framework.
PHP Framework เป็นศูนย์รวมของ Class ที่ถูกพัฒนาขึ้นในรูปแบบของ OOP (Object Oriented Programming) โดยมี run-time ที่ช่วยในการพัฒนาเว็บแอปพลิเคชันได้อย่างรวดเร็ว ในการพัฒนาเว็บแอปพลิเคชันโดยทั่วไป นักพัฒนาจะเก็บไฟล์และโครงสร้างโปรแกรมของตัวเองไว้ใช้เพื่อให้การพัฒนาเว็บเป็นไปด้วยความรวดเร็ว แต่ก็มีข้อเสียคือนักพัฒนาคนอื่นต้องมาเรียนรู้ในแต่ละ Class ว่าแต่ละ Class มี Member อะไร และมี Function อะไร ซึ่งทำให้เสียเวลามาก นั่นก็หมายความว่านักพัฒนาแต่ละคนจะรู้เพียง Class ของตัวเองแต่คนอื่นต้องใช้เวลาในการเรียนรู้ ทางแก้คือใช้ CakePHP โดยนักพัฒนาแต่ละคนจะใช้มาตรฐานเดียวกันในการพัฒนา Web Application ซึ่งทำให้การพัฒนาเป็นไปในทิศทางเดียวกันเรียกว่า ธรรมเนียมการเขียนโปรแกรมเดียวกัน
ใน CakePHP จะถูกออกแบบมาให้ช่วยในการจัดการ Active Record, Association Data Mapping, Front Controller และ MVC โดย MVC จะเป็นหัวใจหลักของ CakePHP โดยมี Model View และ Controller
จากการออกแบบของ CakePHP นั้นทำให้นักพัฒนาไม่ต้องเสียเวลาในการแก้ปัญหาทั่วๆ ไปของโปรแกรม นักพัฒนาสามารถแยกส่วนของ Business logic ออกมาต่างหากทำให้การพัฒนามีความรวดเร็วมากยิ่งขึ้น
CakePHP สามารถทำงานได้ทั้ง PHP4 และ PHP5 ธรรมเนียมการพัฒนาสามารถปรับใช้ได้กับทั้ง PHP4 และ PHP5 ซึ่งไม่เหมือนกับ PHP framework ส่วนมากที่ผู้พัฒนาต้องเลือกเวอร์ชันของ PHP ให้เข้ากันได้ ซึ่งบางครั้ง web server จะมีเพียง PHP4 หรือ PHP5 ตัวใดตัวหนึ่งเท่านั้น แต่ในที่นี้แนะนำให้ใช้ PHP5 ในการพัฒนาเว็บแอปพลิเคชันด้วย CakePHP
แน่นอน CakePHP เป็น Open Source และเป็นของฟรีใครก็สามารถใช้ได้ ซึ่งสามารถแจกจ่ายภายใต้การอนุญาตของ MIT นั่นก็หมายความว่านอกจากจะเป็นของฟรีแล้วเรายังสามารถที่จะปรับเปลี่ยนซอสโค๊ดได้
MVC
MVC.
M คือ Model, V คือ View และ C คือ Controller

Model


View


Controller

หลักการทำงานของ MVC ใน CakePHP

เมื่อ Client มีการร้องขอผ่าน View
ข้อมูลจะส่งผ่านไปหา Controller โดย Controller จะเป็นตัวจำแนก Action ต่างๆ หรือเป็น Business Logic ของระบบ
จากนั้น Controller ก็จะร้องขอไปยัง Model จาก Action นั้นๆ เช่นร้องขอการเลือกข้อมูลทั้งหมดจากตาราง
เมื่อ Model รับการร้องขอก็จะทำการ Query ข้อมูลตามที่ Controller ส่งมา
Model จะส่งข้อมูลที่ได้กลับมาหา Controller
Controller ก็จะทำการ Set ค่าลงในตัวแปรเพื่อส่งให้ View ต่อไป
View ก็จะนำตัวแปรเหล่านั้นไปทำการแสดงผลตามต้องการได้

หลักการทำงานของ MVC ใน CakePHP.
CakePHP เป็น framework ที่ช่วยให้เราสามารถพัฒนาเว็บแอพลิเคชั่นได้อย่างรวดเร็วโดยคุณสมบัติโดยทั่วไปของ CakePHP นั้น มีดังนี้

ใช้รูปแบบของ Model-View-Controller (MVC)
สนับสนุนฐานข้อมูลที่หลากหลาย เช่น MySQL, PostgreSQL และฐานข้อมูลอื่นๆ
ง่ายต่อการติดตั้งทั้งใน Unix และ Windows

หัวใจหลักของ CakePHP นั้นพัฒนาโดยใช้พื้นฐาน MVC (Model, View และ Controller) ซึ่งแยกส่วน Interface ส่วน Business logic และส่วน Database ที่ทำให้ง่ายต่อการพัฒนาโดยการแก้แต่ละส่วนจะไม่กระทบกับอีกส่วน
Controllers
ก่อนอื่นมาเรียนรู้การเขียน Controller ก่อน เพื่อให้เข้าใจง่าย เนื่องจาก Controller เป็น Business Logic หลักของโปรแกรมที่เราต้องการสร้างขึ้น พูดง่ายๆ ว่าเป็น Logic ของโปรแกรมหรือลำดับการทำงานของโปรแกรมที่เราจะเขียนขึ้น โดย Controller เป็นตัวกลางระหว่าง Model กับ View
Controller คือ ตัวควบคุม ใน CakePHP Controller เป็นตัวควบคุมการไหลของข้อมูลระหว่างผู้ใช้ในส่วนของ View กับส่วนที่ติดต่อฐานข้อมูลในส่วนของ Model
ธรรมเนียมการเขียน Controller

ชื่อไฟล์ต้องเป็นพหูพจน์คั่นด้วย _ (Underscore) และอยู่ใน app/controllers
ชื่อ Class ต้องเป็นพหูพจน์ที่เขียนแบบ CamelCase และ สืบทอด (extends) จาก AppController
ต้องมีการกำหนดตัวแปร $name ให้มีชื่อเดียวกับ Class
Method ใน Controller ให้เรียกว่า “Action” โดยมี Action เริ่มต้นคือ index  ที่เมื่อเรียก controller ทุก controller จะเรียก index  อัตโนมัติ

Model เป็นส่วนที่เชื่อมต่อกับฐานข้อมูล ที่มีความจำเพาะเจาะจงกับตารางในฐานข้อมูล โดยปกติแล้ว model
ธรรมเนียมการเขียน Model

ชื่อไฟล์เป็นแบบเอกพจน์ เป็นอักษรภาษาอังกฤษตัวเล็ก และต่อคำด้วย _(Underscore) เช่น content_test.php และอยู่ใน app/models
ชื่อ Class เป็นแบบเอกพจน์ และเป็น CamelCase โดย extends AppModel
มีตัวแปร $name เป็นชื่อ Class และเป็นเอกพจน์

ธรรมเนียมการเขียน Model.
View เป็นส่วนที่แสดงออกมาให้ผู้ใช้เห็น โดยมีการส่งค่าตัวแปรออกมาจาก action set ใน controller
ธรรมเนียมการเขียน View

ชื่อไฟล์จะต้องมีชื่อตาม action ใน controller
ไฟล์จะต้องอยู่ใน folder ที่มีชื่อเดียวกันกับ controller อยู่ใน app/views แต่เป็นตัวอักษรตัวเล็ก เช่น app/views/contents/index.ctp