บทช่วยสอน CakePHP สำหรับผู้เริ่มต้น: CakePHP Framework คืออะไร
⚡ สรุปอย่างชาญฉลาด
บทช่วยสอน CakePHP นี้ครอบคลุมเฟรมเวิร์ก PHP แบบโอเพนซอร์สสำหรับการพัฒนาเว็บแอปพลิเคชันอย่างรวดเร็วโดยใช้รูปแบบ MVC บทช่วยสอนนี้จะอธิบายว่า CakePHP คืออะไร ทำไมทีมต่างๆ จึงเลือกใช้ วิธีการติดตั้ง โครงสร้างโฟลเดอร์และการกำหนดค่า ข้อกำหนดในการตั้งชื่อ และวิธีการที่รูปแบบ Model-View-Controller ขับเคลื่อนแอปพลิเคชัน CakePHP

CakePHP คืออะไร?
CakePHP CakePHP เป็นเฟรมเวิร์กโอเพนซอร์สสำหรับการพัฒนาและบำรุงรักษาเว็บแอปพลิเคชันที่สร้างด้วย PHP อย่างรวดเร็ว มันอยู่บนพื้นฐานของสถาปัตยกรรม MVC ซึ่งช่วยให้สร้างเว็บแอปพลิเคชัน PHP ได้ง่ายและสะดวกยิ่งขึ้นด้วยโค้ดที่น้อยลง นอกจากนี้ CakePHP ยังช่วยให้คุณแยกตรรกะทางธุรกิจออกจากเลเยอร์ข้อมูลและเลเยอร์การนำเสนอได้อีกด้วย
เหตุใดจึงต้องใช้ CakePHP Framework
นี่คือข้อดี/ประโยชน์หลักของการใช้เฟรมเวิร์ก CakePHP:
- CakePHP เป็นหนึ่งในแพลตฟอร์มการพัฒนาเว็บที่เร็วที่สุดอย่างเห็นได้ชัด
- CakePHP ช่วยให้นักพัฒนาได้รับการควบคุมฐานข้อมูลและการสืบค้น SQL ที่ได้รับการปรับปรุง
- ช่วยให้ผู้ใช้สามารถพัฒนาเว็บแอปพลิเคชันที่มีประสิทธิภาพได้อย่างรวดเร็วโดยไม่สูญเสียความยืดหยุ่นของสภาพแวดล้อม
- การสนับสนุนสำหรับ PostgreSQL, SQLite, MySQLและ PEAR-DB สำหรับ ADODB ซึ่งเป็นฐานข้อมูลtracห้องสมุด tion
- ช่วยให้เว็บไซต์เป็นมิตรกับเครื่องมือค้นหา URLs.
- มีฟีเจอร์ต่างๆ เช่น เครื่องมือตรวจสอบความถูกต้องและการกรองข้อมูล ซึ่งทำให้แอปมีความปลอดภัยยิ่งขึ้น
- การสร้างเทมเพลตด้วยไวยากรณ์ PHP ที่คุ้นเคย
วิธีการติดตั้ง CakePHP
วิธีการติดตั้ง CakePHP ที่แนะนำคือการใช้ Composer ซึ่งเป็นตัวจัดการการพึ่งพาของ PHP เมื่อติดตั้ง Composer แล้ว ให้รันคำสั่งด้านล่างเพื่อสร้างโครงร่างโปรเจ็กต์ใหม่
composer create-project --prefer-dist cakephp/app:~5.0 my_app
คำสั่งนี้จะดาวน์โหลด CakePHP และส่วนประกอบที่เกี่ยวข้องลงในโฟลเดอร์ชื่อ my_app จากนั้นคุณสามารถเริ่มเซิร์ฟเวอร์ในตัวได้ด้วยคำสั่งนี้ bin/cake server และเปิด http://localhost:8765 ในเบราว์เซอร์ของคุณ โปรดทราบว่า CakePHP 5 ต้องการ PHP เวอร์ชัน 8.1 หรือใหม่กว่า
ประวัติความเป็นมาของ CakePHP
ในบทเรียน CakePHP นี้ เราจะกล่าวถึงประวัติความเป็นมาของเฟรมเวิร์ก CakePHP:
| ปี | ขั้น |
|---|---|
| 2005 | CakePHP ได้รับการพัฒนาโดย Michal Tatarynowicz เมื่อวันที่ 15 เมษายน 2005 |
| 2005 | CakePHP เผยแพร่ซอฟต์แวร์นี้ภายใต้ใบอนุญาต MIT และเปิดให้เหล่านักพัฒนาในชุมชนใช้งานได้ |
| 2005 | Larry E Masters เข้ามารับตำแหน่งหัวหน้านักพัฒนา |
| 2006 | เวอร์ชัน 1.0 ได้ถูกปล่อยออกมาแล้ว |
| 2011 | เวอร์ชัน 2 ได้ถูกปล่อยออกมาแล้ว |
| 2014 | เวอร์ชัน 3 ได้ถูกปล่อยออกมาแล้ว ซึ่งเป็นการเขียนโค้ดใหม่ทั้งหมดจากเวอร์ชันก่อนหน้า |
| 2016 | CakePHP เวอร์ชัน 3.3 ได้เปิดตัวพร้อมคุณสมบัติขั้นสูงมากมาย |
| 2019 | ได้มีการปล่อยเวอร์ชัน 4.0 ออกมา ซึ่งเป็นการปรับปรุงเฟรมเวิร์กให้ทันสมัยยิ่งขึ้น |
| 2023 | CakePHP 5.0 ได้ถูกปล่อยออกมาแล้ว โดยต้องการ PHP เวอร์ชัน 8.1 หรือใหม่กว่า เวอร์ชันปัจจุบันในปี 2026 คือ CakePHP 5.3.x |
คุณสมบัติของ CakePHP
นี่คือคุณสมบัติที่สำคัญของ CakePHP
- ชุมชนที่กระตือรือร้นและเป็นมิตร
- สถาปัตยกรรม MVC
- การตรวจสอบในตัว
- สามารถใช้งานได้จากไดเร็กทอรีเว็บไซต์ใดก็ได้ โดยไม่จำเป็นต้องตั้งค่า Apache มากหรือเลยก็ได้
- เครื่องมือสร้างเทมเพลต
- การดำเนินการแคช
- การใช้งานฐานข้อมูลแบบ CRUD ที่ง่ายดาย
- การจัดการส่วนประกอบต่างๆ เช่น อีเมล คุกกี้ ความปลอดภัย เซสชัน และคำขอ
- ดูตัวช่วยสำหรับ Javaต้นฉบับ, อาแจ็กซ์แบบฟอร์ม HTML และอื่นๆ
CakePHP- โครงสร้างโฟลเดอร์
ในบทช่วยสอนเฟรมเวิร์ก CakePHP นี้ เราจะเรียนรู้เกี่ยวกับโครงสร้างโฟลเดอร์ CakePHP
ด้านล่างนี้เป็นโครงสร้างโฟลเดอร์ของ CakePHP:
| โฟลเดอร์ | Descriptไอออน |
|---|---|
| การทดสอบ | โฟลเดอร์นี้ประกอบด้วยกรณีทดสอบสำหรับแอปพลิเคชันของคุณ |
| ทีเอ็มพี | โฟลเดอร์ tmp ใช้สำหรับเก็บข้อมูลชั่วคราว |
| ผู้ขาย | โฟลเดอร์นี้เป็นที่ติดตั้ง CakePHP และส่วนประกอบอื่นๆ ที่จำเป็นของแอปพลิเคชัน |
| Webroot | ไดเร็กทอรีหลักของเว็บไซต์จะเก็บไฟล์ทั้งหมดที่คุณต้องการให้สามารถเข้าถึงได้จากภายนอก |
| ถัง | โฟลเดอร์ bin เก็บไฟล์ปฏิบัติการของ Cake console |
| ท่อน | ไฟล์นี้ประกอบด้วยไฟล์บันทึกข้อมูลของคุณ ซึ่งจะขึ้นอยู่กับการตั้งค่าการบันทึกข้อมูลของคุณ |
| การกำหนดค่า | โฟลเดอร์ config จะเก็บไฟล์การตั้งค่าที่ CakePHP ใช้ |
| ปลั๊กอิน | นี่คือที่ที่ปลั๊กอินที่แอปพลิเคชันของคุณใช้งานจะถูกจัดเก็บไว้ |
| ซีเนียร์ | ไฟล์นี้ประกอบด้วยโค้ดสำหรับแอปพลิเคชันของคุณ เช่น คอนโทรลเลอร์ เอนทิตี และพฤติกรรมต่างๆ ไฟล์ Locale จะเก็บไฟล์ข้อความสำหรับภาษาต่างๆ และไฟล์ Model จะเก็บตาราง เอนทิตี และพฤติกรรมของแอปพลิเคชันของคุณ |
การกำหนดค่า CakePHP
CakePHP มาพร้อมกับไฟล์กำหนดค่าเดียวตามค่าเริ่มต้น นอกจากนี้ยังช่วยให้คุณสามารถปรับเปลี่ยนได้ตามความต้องการของคุณ มีโฟลเดอร์ชื่อ "config" มอบให้เพื่อจุดประสงค์นี้
| ชื่อตัวแปร | Descriptไอออน |
|---|---|
| การแก้ปัญหา | ช่วยให้คุณเปลี่ยนเอาต์พุตการดีบัก CakePHP |
| แอพ.เนมสเปซ | ช่วยให้คุณค้นหาคลาสของแอปได้ |
| App.baseUrl | ยกเลิกการแสดงความคิดเห็นคำหลักนี้เมื่อคุณไม่ต้องการใช้ mod_rewrite ของ Apache กับ CakePHP |
| การเข้ารหัสแอป | ช่วยให้คุณกำหนดรูปแบบการเข้ารหัสที่แอปพลิเคชันของคุณใช้ได้ |
| แอพ.ฐาน | นี่คือไดเร็กทอรีหลักที่แอปตั้งอยู่ หากตั้งค่าเป็น false ระบบจะตรวจจับโดยอัตโนมัติ |
| App.fullBaseUrl | ชื่อโดเมนแบบเต็ม (Fully qualified domain name) |
| แอป.webroot | นี่คือไดเร็กทอรีหลักของเว็บไซต์ |
| App.wwwRoot | เส้นทางของไฟล์ไปยังเว็บรูท |
| App.jsBaseUrl | เส้นทางไปยังไดเร็กทอรี js สาธารณะ |
| App.paths | กำหนดค่าเส้นทางสำหรับทรัพยากรที่ไม่ใช่คลาส |
| App.cssBaseUrl | นี่คือเส้นทางเว็บไปยังไดเร็กทอรี CSS สาธารณะที่อยู่ภายใต้ไดเร็กทอรีหลักของเว็บ (webroot) |
| ความปลอดภัยเกลือ | มันเป็นสตริงสุ่มที่ใช้ในการแฮช |
| Asset.ประทับเวลา | ตัวแปรนี้จะเพิ่มการประทับเวลาเมื่อใช้ฟังก์ชันช่วยเหลือที่เหมาะสม |
แบบแผนการตั้งชื่อเค้ก- PHP
Cake ยึดหลัก "การใช้ข้อกำหนดตามรูปแบบมากกว่าการกำหนดค่าเอง" ข้อกำหนดในการตั้งชื่อช่วยให้คุณจัดการการทำงานของเว็บแอปพลิเคชันได้ ในวิธีนี้ ชื่อไฟล์ที่มีมากกว่าหนึ่งคำจะต้องคั่นด้วย "_" และใช้รูปแบบ Camel Case เมื่อตั้งชื่อคลาส
ส่วนประกอบ MVC ต้องใช้ไวยากรณ์ตามที่ระบุไว้ด้านล่างนี้:
| ชื่อไฟล์ | ชื่อคลาส | ชื่อคลาสพื้นฐาน | สถานที่ | |
|---|---|---|---|---|
| รุ่น | ชื่อตารางในรูปเอกพจน์ที่มีนามสกุล .php เช่น order.php | ชื่อไฟล์ในรูปแบบ Camel Case เช่น Order | แอพโมเดล | /แอพ/รุ่น |
| ตัวควบคุม | ชื่อตาราง_คอนโทรลเลอร์ที่มีนามสกุล .php เช่น orders_controller.php | ชื่อตารางจะต่อท้ายด้วย Controller เช่น OrdersController | แอพคอนโทรลเลอร์ | /app/ตัวควบคุม |
| รายละเอียด | ชื่อแอ็กชันในคอนโทรลเลอร์ที่มีนามสกุล .ctp เช่น add.ctp | ไม่มีคลาส; มุมมองประกอบด้วยแท็ก HTML และ PHP | ชื่อตัวควบคุม /app/views/ |
การกำหนดค่าฐานข้อมูล
CakePHP อนุญาตให้คุณกำหนดค่าฐานข้อมูลได้ config/app.php ไฟล์นี้จะให้การเชื่อมต่อเริ่มต้นพร้อมพารามิเตอร์ที่กำหนดไว้ ซึ่งคุณสามารถแก้ไขได้ตามต้องการ
พารามิเตอร์ที่สำคัญได้รับด้านล่าง:
| พารามิเตอร์ | Descriptไอออน |
|---|---|
| พอร์ต (ไม่จำเป็น) | พอร์ต TCP หรือซ็อกเก็ต Unix ที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์ |
| เขตเวลา | เขตเวลาของเซิร์ฟเวอร์ที่จะตั้งค่า |
| schema | ช่วยให้คุณระบุสคีมาที่คุณสามารถใช้ได้ |
| unix_socket | ใช้โดยผู้ขับขี่เพื่อเชื่อมต่อผ่านไฟล์ซ็อกเก็ต Unix |
| ssl_key | นี่คือพาธของไฟล์คีย์ SSL |
| ssl_cert | นี่คือพาธของไฟล์ใบรับรอง SSL |
| ssl_ca | นี่คือเส้นทางไฟล์ไปยังหน่วยงานออกใบรับรอง SSL |
| เข้าสู่ระบบ | คำนี้ช่วยให้คุณดำเนินการบันทึกแบบสอบถาม |
| ในนั้น | รายการแบบสอบถามที่ควรส่งไปยังเซิร์ฟเวอร์ฐานข้อมูลทุกครั้งที่สร้างการเชื่อมต่อ |
| ตัวระบุใบเสนอราคา | ตั้งค่าเป็น true หากคุณต้องการใช้คำสงวนหรืออักขระพิเศษ |
MVC ทำงานอย่างไรใน CakePHP
ในบทเรียนเฟรมเวิร์ก CakePHP นี้ เราจะมาเรียนรู้วิธีการทำงานของ MVC ใน CakePHP กัน
นี่เป็นวิธีการสร้างกลไกหลักของเว็บแอปพลิเคชันแบบไดนามิก โดยที่โมเดล วิว และคอนโทรลเลอร์จะแยกออกจากกัน

CakePHP แบ่งการทำงานออกเป็นสามส่วน:
- โมเดล: ใช้สำหรับการโต้ตอบกับฐานข้อมูลทั้งหมด
- มุมมอง: ใช้สำหรับเอาต์พุตและจอแสดงผลทั้งหมด
- ตัวควบคุม: ใช้สำหรับควบคุมการไหลของแอปพลิเคชัน
ต่อไปนี้คือขั้นตอนการใช้งานสถาปัตยกรรม MVC ใน CakePHP:
ขั้นตอน 1) ลูกค้าหรือผู้ใช้มีปฏิสัมพันธ์กับมุมมองนั้น
ขั้นตอน 2) หน้าจอแสดงผลจะแจ้งเตือนตัวควบคุมเกี่ยวกับเหตุการณ์เฉพาะนั้นๆ
ขั้นตอน 3) ตัวควบคุมจะส่งคำขอไปยังฐานข้อมูลและอัปเดตโมเดล
ขั้นตอน 4) โมเดลจะแจ้งให้ผู้ดูทราบว่ามีการเปลี่ยนแปลงเกิดขึ้น
ขั้นตอน 5) ส่วนแสดงผลจะรับข้อมูลจากโมเดลและอัปเดตตัวเองตามข้อมูลที่ได้รับ
ทำไมต้องใช้ MVC?
- CakePHP MVC ช่วยให้คุณแยกตรรกะทางธุรกิจออกจากส่วนการแสดงผลและการดึงข้อมูล
- ไซต์แบ่งออกเป็นส่วนตรรกะซึ่งคุณสามารถควบคุมด้วยตัวควบคุมเฉพาะได้
- เมื่อทำการทดสอบและแก้ไขข้อผิดพลาดของแอปพลิเคชัน นักพัฒนาซอฟต์แวร์ทุกคนสามารถค้นหาและแก้ไขข้อผิดพลาดได้โดยไม่ต้องมีรายละเอียดของโค้ดทั้งหมด
ข้อเสียของการใช้เฟรมเวิร์ก CakePHP
- เอกสารประกอบการใช้งานของ CakePHP ยังไม่ครอบคลุมเท่าที่ควร
- ในการใช้งาน CakePHP นักพัฒนาจำเป็นต้องอัปเดตเส้นทางเริ่มต้นเพื่อสร้างเอฟเฟ็กต์ที่สวยงาม URLซึ่งต้องใช้ความพยายามมากกว่าเมื่อเทียบกับเฟรมเวิร์ก PHP อื่นๆ บางตัว
- CakePHP ใช้การกำหนดเส้นทางแบบทางเดียว ซึ่งแตกต่างจากเฟรมเวิร์กอื่นๆ
- เรียนรู้ PHP การใช้งานเฟรมเวิร์กนั้นไม่ใช่เรื่องง่ายเสมอไปสำหรับผู้เริ่มต้น
- การกำหนดเส้นทางแบบทางเดียวเป็นข้อเสียอีกประการหนึ่งเมื่อเปรียบเทียบกับเฟรมเวิร์กอย่างเช่น Ruby on Rails
