บทช่วยสอน CakePHP สำหรับผู้เริ่มต้น: CakePHP Framework คืออะไร

⚡ สรุปอย่างชาญฉลาด

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

  • 🎂 CakePHP คืออะไร: CakePHP เป็นเฟรมเวิร์ก MVC แบบโอเพนซอร์สที่ใช้สร้างและดูแลรักษาเว็บแอปพลิเคชัน PHP โดยใช้โค้ดน้อยลง
  • ⚡ ทำไมต้องใช้: มันช่วยให้การพัฒนาเป็นไปอย่างรวดเร็ว และมีประสิทธิภาพในการจัดการฐานข้อมูลtracการแสดงผล, การตรวจสอบความถูกต้องในตัว และเป็นมิตรกับเครื่องมือค้นหา URLนอกกรอบ
  • 📦 การติดตั้ง: Composer ติดตั้ง CakePHP ด้วยคำสั่ง create-project เพียงคำสั่งเดียว โดยเวอร์ชันปัจจุบัน 5 ต้องการ PHP เวอร์ชัน 8.1 หรือใหม่กว่า
  • 📁 โครงสร้างโฟลเดอร์: การจัดระเบียบโฟลเดอร์อย่างชัดเจนจะช่วยแยกซอร์สโค้ด การตั้งค่า การทดสอบ บันทึก ปลั๊กอิน และไดเร็กทอรีเว็บสาธารณะ เพื่อให้ง่ายต่อการบำรุงรักษา
  • 🔤 อนุสัญญา: การใช้ชื่อที่สอดคล้องกับโมเดล ตัวควบคุม และมุมมอง จะช่วยลดการเขียนโค้ดซ้ำซ้อนได้
  • 🔁 ขั้นตอนการทำงานของ MVC: โมเดลทำหน้าที่จัดการข้อมูล วิวทำหน้าที่จัดการผลลัพธ์ และคอนโทรลเลอร์ทำหน้าที่กำหนดเส้นทางการไหลของข้อมูลping ประเด็นต่าง ๆ ถูกแยกออกจากกันอย่างชัดเจน
  • 🤖 AI ช่วยเหลือ: เครื่องมือ AI สามารถสร้างโครงสร้างพื้นฐานให้กับแอปพลิเคชัน CakePHP CRUD และช่วยย้ายโปรเจ็กต์ CakePHP เวอร์ชันเก่าไปยังเวอร์ชัน 5 ได้

บทช่วยสอน 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 กัน

นี่เป็นวิธีการสร้างกลไกหลักของเว็บแอปพลิเคชันแบบไดนามิก โดยที่โมเดล วิว และคอนโทรลเลอร์จะแยกออกจากกัน

สถาปัตยกรรม MVC ใน CakePHP
สถาปัตยกรรม MVC ใน CakePHP

CakePHP แบ่งการทำงานออกเป็นสามส่วน:

  • โมเดล: ใช้สำหรับการโต้ตอบกับฐานข้อมูลทั้งหมด
  • มุมมอง: ใช้สำหรับเอาต์พุตและจอแสดงผลทั้งหมด
  • ตัวควบคุม: ใช้สำหรับควบคุมการไหลของแอปพลิเคชัน

ต่อไปนี้คือขั้นตอนการใช้งานสถาปัตยกรรม MVC ใน CakePHP:

ขั้นตอน 1) ลูกค้าหรือผู้ใช้มีปฏิสัมพันธ์กับมุมมองนั้น

ขั้นตอน 2) หน้าจอแสดงผลจะแจ้งเตือนตัวควบคุมเกี่ยวกับเหตุการณ์เฉพาะนั้นๆ

ขั้นตอน 3) ตัวควบคุมจะส่งคำขอไปยังฐานข้อมูลและอัปเดตโมเดล

ขั้นตอน 4) โมเดลจะแจ้งให้ผู้ดูทราบว่ามีการเปลี่ยนแปลงเกิดขึ้น

ขั้นตอน 5) ส่วนแสดงผลจะรับข้อมูลจากโมเดลและอัปเดตตัวเองตามข้อมูลที่ได้รับ

ทำไมต้องใช้ MVC?

  • CakePHP MVC ช่วยให้คุณแยกตรรกะทางธุรกิจออกจากส่วนการแสดงผลและการดึงข้อมูล
  • ไซต์แบ่งออกเป็นส่วนตรรกะซึ่งคุณสามารถควบคุมด้วยตัวควบคุมเฉพาะได้
  • เมื่อทำการทดสอบและแก้ไขข้อผิดพลาดของแอปพลิเคชัน นักพัฒนาซอฟต์แวร์ทุกคนสามารถค้นหาและแก้ไขข้อผิดพลาดได้โดยไม่ต้องมีรายละเอียดของโค้ดทั้งหมด

ข้อเสียของการใช้เฟรมเวิร์ก CakePHP

  • เอกสารประกอบการใช้งานของ CakePHP ยังไม่ครอบคลุมเท่าที่ควร
  • ในการใช้งาน CakePHP นักพัฒนาจำเป็นต้องอัปเดตเส้นทางเริ่มต้นเพื่อสร้างเอฟเฟ็กต์ที่สวยงาม URLซึ่งต้องใช้ความพยายามมากกว่าเมื่อเทียบกับเฟรมเวิร์ก PHP อื่นๆ บางตัว
  • CakePHP ใช้การกำหนดเส้นทางแบบทางเดียว ซึ่งแตกต่างจากเฟรมเวิร์กอื่นๆ
  • เรียนรู้ PHP การใช้งานเฟรมเวิร์กนั้นไม่ใช่เรื่องง่ายเสมอไปสำหรับผู้เริ่มต้น
  • การกำหนดเส้นทางแบบทางเดียวเป็นข้อเสียอีกประการหนึ่งเมื่อเปรียบเทียบกับเฟรมเวิร์กอย่างเช่น Ruby on Rails

คำถามที่พบบ่อย

ใช่แล้ว สำหรับการดูแลรักษาโปรเจกต์ CakePHP ที่มีอยู่แล้ว และสำหรับทีมที่ให้ความสำคัญกับแนวทางการใช้งานแบบยึดหลักข้อตกลงมากกว่าการกำหนดค่าเอง Laravel และ Symfony มีชุมชนที่ใหญ่กว่า แต่ CakePHP 5 ยังคงได้รับการดูแลรักษาอย่างต่อเนื่องและยังคงเป็นเฟรมเวิร์กที่แข็งแกร่งและมีประสิทธิภาพ

ทั้งคู่เป็นเฟรมเวิร์ก PHP แบบ MVC Laravel มีระบบนิเวศที่ใหญ่กว่า ไวยากรณ์ที่แสดงออกได้ดี และใช้ Eloquent ORM ส่วน CakePHP เน้นการใช้ข้อกำหนดที่เข้มงวดและการสร้างโครงสร้างพื้นฐานอย่างรวดเร็วโดยมีการตั้งค่าที่น้อยกว่า Laravel เป็นที่นิยมมากกว่า แต่ CakePHP อาจเริ่มต้นพัฒนาแอปพลิเคชันแบบดั้งเดิมได้เร็วกว่า

CakePHP 5 ซึ่งเป็นเวอร์ชันหลักปัจจุบัน ต้องการ PHP เวอร์ชัน 8.1 หรือใหม่กว่า CakePHP 4 รุ่นเก่ารองรับ PHP เวอร์ชัน 7.4 ขึ้นไป แต่ใกล้จะหมดอายุการใช้งานแล้ว ดังนั้นโครงการใหม่ควรเลือกใช้ CakePHP 5 บน PHP เวอร์ชันใหม่ๆ

ใช่แล้ว AI สามารถสร้าง migration, entity, table, controller และ templates สำหรับ CRUD resource ตามหลักการของ CakePHP และอธิบายคำสั่ง bake console ได้ Revตรวจสอบกฎการตรวจสอบและทดสอบการกระทำแต่ละอย่าง

ใช่แล้ว AI สามารถระบุเมธอดที่เลิกใช้แล้ว เนมสเปซที่ได้รับการอัปเดต และการเปลี่ยนแปลงลายเซ็นต์ และแนะนำวิธีการทดแทนทีละขั้นตอนได้ เนื่องจากกระบวนการย้ายข้อมูลมีขนาดใหญ่ จึงควรอัปเกรดทีละส่วนและเรียกใช้ชุดทดสอบหลังจากการเปลี่ยนแปลงแต่ละครั้ง

สรุปโพสต์นี้ด้วย: