ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

โครงสร้างของ CodeIgniter Framework

CodeIgniter Framework รองรับการเขียนแบบ Model-View-Controller ( MVC ) เป็นการแยกส่วนประมวลผล ออกจากส่วนแสดงผล ทำให้โครงสร้างมีความปลอดภัยมากยิ่งขึ้น และง่ายต่อการพัฒนาโปรแกรม โค้ดที่ได้มีความเป็นระเบียบและง่ายต่อการนำไปแก้ไข CodeIgniter Framework  ยังออกแบบให้สามารถติดต่อกับฐานข้อมูลชนิดต่างๆ ได้ง่ายอีกด้วย เช่น mysql, postgress, sqlserver หรือ Oracle เป็นต้น หากเรียกใช้ฐานข้อมูลถูกต้องตามหลักของ Database library แล้ว ผู้ใช้สามารถเปลี่ยนชนิดของฐานข้อมูลได้ เพียงแค่แก้ค่าคอนฟิกเพียงไม่กี่ที่เท่านั้น ส่วนระบบ url ของระบบ codeigniter สามารถสร้างได้สะอาดและเป็นมิตรกับกลไกการค้นหา (Search-Engine) ทำให้เสามารถนำไปพัฒนาได้ทั้ง เว็บไซต์ และเว็บแอพพลิเคชั่น ไฟล์ภายใน CodeIgniter ประกอบด้วย โครงสร้างหลักๆ คือ application, system, index.php ระบบภายในสามารถแยกโปรเจคออกเป็น หลายๆ application ได้

โครงสร้างภายในโฟล์เดอร์ application มีอะไรบ้าง

  • cache : เป็นส่วนเก็บข้อมูลที่ประมวลผลแล้ว เพื่อรอการเรียกใช้ครั้งต่อไป
  • config : ใช้ตั้งค่าระบบต่างๆ ภายใน application
  • controllers : ส่วนที่ทำหน้าที่ควบคุมการทำงานของระบบ และหมายถึงจะเป็นตัวที่สั่ง view ให้แสดงผลด้วย
  • core :  คือ classes ที่ทาง CodeIgniter เตรียมไว้ให้ใช้งานแล้ว โดยจะเก็บไว้ใน folder /system/libraries
  • helpers : หากคุณต้องการเขียนฟังชั่นใช้เองในระบบสามารถสร้างและเก็บใว้ในที่นี่
  • hooks : ใช้สำหรับสร้างไฟล์ เพื่อเข้าไป เพิ่ม, แก้ใข Class ต่างๆ ตามเราต้องการ
  • language : เป็นที่เก็บไฟล์ภาษาต่างๆ สำหรับผู้ที่ต้องการทำเว็บหลายภาษา
  • libraries : เป็นที่เก็บไฟล์ Class ที่คุณเขียนขึ้นเอง หากต้องการเรียกใช้ Class อื่นๆ ต้องเรียก get_instance ก่อน
  • logs : เป็นที่เก็บไฟล์บันทึกประวัติการทำงานภายใน application
  • models : คล้ายๆ libraries แต่ models จะสามารถเรียกใช้ libraries ที่คุณโหลดเข้ามาในระบบได้เลย
  • third_party : ขอศึกษาตัวนี้ก่อนค่ะ
  • views : เป็นส่วนที่ใช้ในการแสดงผล โค้ดส่วนใหญ่เป็นแบบ HTML แต่นามสกลุไฟล์ต้องเป็น .php เท่านั้น

 

Model-View-Controller MVC

คือโครงสร้างตามหลักการ ระบบจะแยกส่วนประมวลผล ออกจากส่วนแสดงผล แต่ในทางปฎิบัติ คุณสามารถเขียนโค้ด PHP ลงในส่วนแสดงผลได้เช่นกัน

โมเดล (Model) หมายถึง ส่วนของซอฟต์แวร์ที่ใช้ในการแปลการทำงานของระบบ ไปสู่สิ่งที่ระบบซอฟต์แวร์ได้ถูกออกแบบเอาไว้ ตรรกะเนื้อหาใช้เพื่อให้ความหมายแก่ข้อมูลดิบ (ยกตัวอย่างเช่น การคำนวณว่าวันนี้เป็นวันเกิดของผู้ใช้หรือไม่, หรือจำนวนเงินรวม ภาษี และค่าส่งสินค้า ในตะกร้าสินค้า) เมื่อโมเดลมีการเปลี่ยนแปลง จะมีการส่งคำเตือนให้แก่ วิว ที่เกี่ยวข้องเพื่อปรับค่า

วิว (View) แสดงผลค่าในโมเดลในรูปแบบที่เหมาะสมกับผู้ใช้ ในแต่ละโมเดลสามารถมีวิวได้หลายแบบ เพื่อใช้ในจุดประสงค์ที่ต่างกัน

คอนโทรลเลอร์ (Controller) รับข้อมูลจากผู้ใช้เข้ามา แล้วดำเนินการตอบสนองต่อข้อมูลนั้น โดยเรียกใช้ logic ต่างๆจากอ็อบเจกต์ในโมเดล และส่งข้อมูลผลลัพย์นั้นกลับไปยังส่วนแสดงผล เพื่อตอบกลับไปยังผู้ใช้ได้อย่างถูกต้อง

MVC มักจะพบได้ในเว็บแอปพลิเคชันโดย วิว จะเป็น html หรือ XHTML ที่สร้างโดยแอปพลิเคชันนั้น ส่วนคอนโทรลเลอร์รับค่า GET หรือ POST เข้ามา แล้วเลือกติดต่อกับโมเดลในส่วนที่เกี่ยวข้องเพื่อตอบสนอง โมเดลซึ่งมี business rules จะทำการจัดการตามคำร้องขอนั้นๆ

 

ขั้นตอนการทำงาน

  • index.php : เป็นตัวควบคุมส่วนหน้า, สร้างหน้าพื้นฐานที่ต้องการในการรัน CodeIgniter
  • Rounting : ตัว Router ทำการตรวจสอบ HTTP request กำหนดว่าควรจะทำอะไรกับมัน
  • Caching : ถ้ามีไฟล์แคชอยู่ ตัวมันจะถูกส่งกลับทันทีไปยังบราวเซอร์ โดยไม่ผ่านการทำงานปกติของระบบ
  • Security : ก่อนที่จะโหลดตัวควบคุมของแอพพลิเคชั่น (Application Controller) HTTP request และผู้ใช้ใดๆที่ส่งข้อมูลมาจะถูกกรองข้อมูลเพื่อความปลอดภัย
  • Application Controller : โหลดแบบจำลอง(Model) , ไลบรารี่หลัก(Libraries) , plugins, ผู้ช่วย (Helpers) และทรัพยากรอื่นๆที่จำเป็นในทำงานที่ถูกร้องขอมา
  • View : ปฎิบัติงานและถูกส่งกลับไปยังบราวเซอร์เพื่อโชว์หน้าจอ ถ้าระบบแคชถูกใช้งาน หน้าจอจะถูกแคชก่อนแล้วจึงค่อยส่งสิ่งที่ร้องขอมาเป็นลำดับถัดไป

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
อยากทราบวิธีการ ปลดล็อกผู้ใช้งานเว็บบอร์ด phpbb ที่ถูกล็อกเนื่องจากเข้าระบบไม่ถูกต้องหลายครั้ง
โดย Ittichai_chupol พฤ 20 มิ.ย. 2019 7:21 pm บอร์ด Programming - PHP
0
8
พฤ 20 มิ.ย. 2019 7:21 pm โดย Ittichai_chupol
คัดสรรเฟอร์นิเจอร์แบบลงตัว-คอนโดสุขุมวิท
โดย Patty Perfume พฤ 20 มิ.ย. 2019 6:29 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
7
พฤ 20 มิ.ย. 2019 6:29 pm โดย Patty Perfume
แนะนำผลไม้หากินง่าย แก้เจ็บคอ !!
โดย chatee supasand พฤ 20 มิ.ย. 2019 6:22 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
7
พฤ 20 มิ.ย. 2019 6:22 pm โดย chatee supasand
การสร้าง และ อ่าน ไฟล์ Excel ภาษา Python
โดย chatee supasand พฤ 20 มิ.ย. 2019 5:48 pm บอร์ด Python Knowledge
0
2
พฤ 20 มิ.ย. 2019 5:48 pm โดย chatee supasand
ข้อดี / ข้อเสียของ Manual Testing และ Automated Testing
โดย Patipat พฤ 20 มิ.ย. 2019 5:22 pm บอร์ด Software testing
0
8
พฤ 20 มิ.ย. 2019 5:22 pm โดย Patipat
เดินทางกรุงเทพไปสระบุรี
โดย jirawoot พฤ 20 มิ.ย. 2019 5:15 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
7
พฤ 20 มิ.ย. 2019 5:15 pm โดย jirawoot
หาเนื้อเพลงด้วย google
โดย jamepiyawat พฤ 20 มิ.ย. 2019 5:05 pm บอร์ด Share Knowledge
0
12
พฤ 20 มิ.ย. 2019 5:05 pm โดย jamepiyawat
Pycharm พิมพ์ไทยไม่ได้ ทำไงให้พิมพ์ได่อะครับ
โดย chatee supasand พฤ 20 มิ.ย. 2019 3:41 pm บอร์ด Programming - C/C++ & java & Python
2
17
พฤ 20 มิ.ย. 2019 4:00 pm โดย chatee supasand
อยากทราบวิธีการตัด bbcode video ออกจาก โพสต์ ใน phpbb
โดย Ittichai_chupol พฤ 20 มิ.ย. 2019 3:00 pm บอร์ด Programming - PHP
0
4
พฤ 20 มิ.ย. 2019 3:00 pm โดย Ittichai_chupol
กราฟเทรดเงินคือ อะไร...
โดย Patipat พฤ 20 มิ.ย. 2019 2:54 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
7
พฤ 20 มิ.ย. 2019 2:54 pm โดย Patipat
ใช้คำสั่ง preg_match เก็บข้อมูลเฉพาะส่วนได้หรือเปล่า ครับ
โดย jamepiyawat พฤ 20 มิ.ย. 2019 2:49 pm บอร์ด Programming - PHP
3
26
พฤ 20 มิ.ย. 2019 6:26 pm โดย jamepiyawat
ทำความรู้จักกับ Sensor วัดอุณภูมิและความชื้น DHT22 Connect NodeMCU(ESP8266)
โดย Patipat พฤ 20 มิ.ย. 2019 2:23 pm บอร์ด IOT - Internet of things
0
11
พฤ 20 มิ.ย. 2019 2:23 pm โดย Patipat
วิธีทำให้หายเหนื่อยหลังจากการทำงาน !!!
โดย chatee supasand พฤ 20 มิ.ย. 2019 2:16 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
9
พฤ 20 มิ.ย. 2019 2:16 pm โดย chatee supasand
wkhtmltopdf iFrame rendering
โดย mindphp พฤ 20 มิ.ย. 2019 1:50 pm บอร์ด JavaScript & Jquery Ajax
1
6
พฤ 20 มิ.ย. 2019 1:51 pm โดย mindphp
Microsoft Edge สามารถใช้บน Windows 7,8,8.1 ได้แล้ว
โดย chatee supasand พฤ 20 มิ.ย. 2019 11:44 am บอร์ด Microsoft Office Knowledge & line & Etc
0
5
พฤ 20 มิ.ย. 2019 11:44 am โดย chatee supasand
การใช้ scanf() ในภาษาซี
โดย jirawoot พฤ 20 มิ.ย. 2019 10:59 am บอร์ด Share Knowledge
0
5
พฤ 20 มิ.ย. 2019 10:59 am โดย jirawoot
งานประจำวันที่ 20 มิถุนายน 2562
โดย Patipat พฤ 20 มิ.ย. 2019 10:18 am บอร์ด M088 - ปฏิภัทร สารธรรม
2
15
พฤ 20 มิ.ย. 2019 7:53 pm โดย tatiya
งานประจำวันที่ 20 มิถุนายน 2562
โดย chatee supasand พฤ 20 มิ.ย. 2019 10:11 am บอร์ด MT33 - นายชาตรี สุภาแสน
1
3
พฤ 20 มิ.ย. 2019 7:05 pm โดย chatee supasand
งานประจำวันที่ 20 มิถุนายน 2562
โดย EyePornnipa พฤ 20 มิ.ย. 2019 10:09 am บอร์ด M089 - นางสาวพรนิภา ราชธานี
2
22
พฤ 20 มิ.ย. 2019 7:35 pm โดย EyePornnipa
งานประจำวันที่ 20 มิถุนายน 2562
โดย jamepiyawat พฤ 20 มิ.ย. 2019 10:08 am บอร์ด M084 - นายปิยวัช เชาว์วิมล
3
16
พฤ 20 มิ.ย. 2019 7:41 pm โดย jamepiyawat