คุณยกคำถามที่น่าสนใจและพื้นฐาน คำถามเกี่ยวกับสถาปัตยกรรมโครงการขนาดใหญ่และการจัดโครงสร้างโฟลเดอร์ (ซึ่งรองจากสถาปัตยกรรม)
ทุกวันนี้วิธีการทั่วไปในการสร้างสถาปัตยกรรมเฟรมเวิร์ก CMS คือการใช้รูปแบบ MVC มีบางบทความที่ดีเกี่ยวกับการสร้างกรอบ MVC ของคุณเองเป็นหนึ่งในนั้นคือสร้างกรอบ MVC กับ PHP
MVC ย่อมาจาก Model, View, Controller คุณอาจเรียกวิธีการเหล่านี้ได้ตามต้องการ - MVC, HMVC, MVP สิ่งสำคัญคือการแยกส่วนประกอบแต่ละส่วนของระบบของคุณ "Controller" ดึงข้อมูลจาก "Model" และส่งไปยัง "View" ซึ่งแสดงผล HTML ขั้นสุดท้าย คุณได้ติดตั้ง "V" ในcontacts.php
"MC" ของคุณcontacts_class.php
แล้ว ดังนั้นคุณได้แยกมุมมองจากรูปแบบและตัวควบคุม ตอนนี้คุณสามารถเปลี่ยน "มุมมอง" ของคุณได้โดยไม่ทำให้ส่วนอื่นเสียหาย
ฉันไม่แนะนำให้คุณติดตาม MVC, MVP หรือรูปแบบ "MV" อย่างอื่น มันเป็นเรื่องของความเหมาะสมประสิทธิภาพและรสชาติ
แอปพลิเคชันเว็บไซต์แบบไดนามิกทั่วไปอาจรวมถึงส่วนประกอบเช่น:
- จุดเข้าพูด
index.php
- ไลบรารี / คลาสผู้ช่วย
- คำขอเราเตอร์
- โมดูลส่วนประกอบหรือตัวควบคุม
- เครื่องมือเทมเพลตหรือมุมมองเดียว
เว็บแอปพลิเคชันจริงอาจรวมถึงส่วนประกอบอื่น ๆ เช่นตัวจัดการเหตุการณ์ตัวกระจายเหตุการณ์และตัวต่อ แต่ในความเป็นจริงแล้วมันมีความแตกต่าง ให้ฉันแสดงวิธีที่ฉันต้องการนำเสนอ:
เฟรมเวิร์กการดำเนินการทั่วไปของเฟรมเวิร์กมีดังนี้:
- คำขอของเบราว์เซอร์จะถูกส่งโดยตรงไปยังจุดปฏิบัติการที่เรียกใช้ / สคริปต์ (
index.php
)
- สคริปต์จุดเริ่มต้นโหลดไลบรารีตัวช่วยคลาสและดำเนินการเริ่มต้นเพิ่มเติมของสภาพแวดล้อมการเขียนโปรแกรมของเรา
- URL ถูกส่งผ่านไปยังอินสแตนซ์เราเตอร์ที่ร้องขอ ขั้นตอนนี้สามารถเป็นส่วนหนึ่งของขั้นตอนที่ 2
- เราเตอร์ที่ร้องขอแยกวิเคราะห์ URL และส่งการดำเนินการไปยังส่วนประกอบโมดูลหรือตัวควบคุมเฉพาะ
- ส่วนประกอบ (หรือตัวควบคุม) ประมวลผลคำขอเส้นทางและส่งข้อมูลไปยังมุมมองที่จะแสดงผล
โครงสร้างโฟลเดอร์โครงการที่สอดคล้องกันจะแสดงในแผนภาพ
ฉันขอแนะนำให้คุณตรวจสอบว่ามีการนำกรอบงานอื่นมาใช้อย่างไร CMS / เฟรมเวิร์กที่แนะนำให้เริ่มด้วยคือ CodeIgniter, OpenCart, Joomla 1.5 และ Tango CMS