CodeIgniter ถูกสร้างบนพื้นฐานการพัฒนาแบบ Model-View-Controller (MVC) ซึ่งก็คือ วิธีการทางซอฟต์แวร์ที่แยกระบบการใช้เหตุผลของแอพพลิเคชั่นจากส่วนแสดงผล ในทางปฏิบัติมันอนุญาตให้หน้าเว็บของคุณมีสคริปเล็กๆ เนื่องจากส่วนแสดงต้องแยกออกจากสคริป PHP รายละเอียดเกี่ยวกับ MVC มีดังนี้
การเรียนการสอนทางด้านคอมพิวเตอร์ การเขีียนโปรแกรม การพัฒนาโปรแกรม เทคนิคที่ึควรรู้ เทคนิคการวิเคราะห์และออกแบบระบบ และซอฟต์แวร์โอเพนซอร์ต (Open Source) ที่น่าสนใจ
วันอังคารที่ 5 ตุลาคม พ.ศ. 2553
วันพฤหัสบดีที่ 30 กันยายน พ.ศ. 2553
CodeIgnitor: ขั้นตอนการทำงานของแอพพลิเคชั่น
ขั้นตอนการทำงานของแอพพลิเคชั่น สามารถแสดงได้จากรูปภาพ
- Index.php เป็นตัวควบคุมส่วนหน้า, สร้างทรัพยากรพื้นฐานที่ต้องการในการรัน CodeIgniter
- Routing: ตัว Router ทำการตรวจสอบ HTTP request กำหนดว่าควรจะทำอะไรกับมัน
- Caching: ถ้ามีไฟล์แคชอยู่ ตัวมันจะถูกส่งกลับทันทีไปยังบราวเซอร์ โดยไม่ผ่านการทำงานปกติของระบบ
- Security: ก่อนที่จะโหลดตัวควบคุมของแอพพลิเคชั่น (Application Controller) HTTP request และผู้ใช้ใดๆ ที่ส่งข้อมูลมาจะถูกกรองข้อมูลเพื่อความปลอดภัย
- Application Controller: โหลดแบบจำลอง (Model), ไลบรารี่หลัก (Libraries), Plugins, ผู้ช่วย (Helpers) และทรัพยากรอื่นๆ ที่จำเป็นในการทำงานที่ถูกร้องขอมา
- View: ปฏิบัติงานและถูกส่งกลับไปยังบราวเซอร์เพื่อโชว์หน้าจอ ถ้าระบบแคชถูกใช้งาน หน้าจอจะถูกแคชก่อนแล้วจึงค่อยส่งสิ่งที่ร้องขอมาเป็นลำดับถัดไป
อ้างอิงจาก: http://codeigniter.in.th/user_guide/overview/appflow.html
ทำความรู้จักกับ CodeIgniter (CI)
CodeIgniter (CI) เป็น PHP Framework ที่ใช้ในการพัฒนาเว็บแอพพลิเคชั่น โดยมีคุณสมบัติในด้านการพัฒนาให้รวดเร็วยิ่งขึ้น เมื่อเปรียบเทียบการพัฒนาแบบเดิมๆ ที่เราต้องนั่งเขียนโค้ดเองตั้งแต่เริ่มต้น ซึ่ง CI จะมี library ต่างๆ จัดเตียมไว้ให้เราใช้งานทั่วไปและยังทำให้ลดจำนวนโค้ดที่เราเขียนน้อยลง และมาพร้อมกับ library ที่สมบูรณ์ ซึ่งใช้ทำงานส่วนใหญ่ในการพัฒนาเว็บไซต์ เช่น ติดต่อฐานข้อมูล, ส่งอีเมล์, ตรวจสอบรูปแบบข้อมูล, ดำรงช่วงเวลาการสื่อสาร, จัดการกับรูปภาพ, ทำงานกับข้อมูล XML-RPC ฯลฯ อีกมากมาย อีกทั้งเรายังสามารถขยายการทำงานได้ โดยผ่าน library plugins หรือ helper หรือผ่านการต่อเติม class หรือระบบตะขอ (Hook)
CI สามารถทำงานได้ทั้ง PHP 4 และ PHP 5 ซึ่งแน่นอนว่า CI จะต้องเป็น Open Source (Free) ที่อยู่ภายใต้เงื่อนไข Apache/BSD และทรัพยากรน้อยกว่า Framework ตัวอื่นๆ เนื่องจาก CI ต้องการเพียง library เพียงเล็กน้อยเท่านั้น (หลักๆ) จึงทำให้มีขนาดเล็กและรวดเร็วในการทำงาน
CI ใช้ Model-View-Controller (MVC) ช่วยในการแบ่งแยกการทำงานของระบบออกเป็นส่วนๆ เพื่อง่ายต่อการพัฒนา และยังสร้าง URL ที่สะอาดและเป็นมิตรกับกลไกการค้นหา (Search Engine) เช่น Google, Yahoo ตรงข้ามกับการวิธีการใช้ "query string" กับ URL ซึ่งมีความหมายเหมือนกันกับระบบการเคลื่อนที่ CodeIgniter ใช้วิธีการแบ่งเป็นกลุ่ม เช่น example.com/news/article/345 เป็นต้น
CI ไม่ต้องการกลไก Template ถึงแม้ว่า CodeIgniter จะมาพร้อมกับ Template Parser แบบง่าย ซึ่งเป็นทางเลือกที่สามารถใช้ได้ โดยไม่ได้บังคับให้คุณต้องใช้มัน กลไก Template อย่างง่ายไม่สามารถมีประสิทธิภาพเท่ากับ PHP ตามธรรมชาติ และคุณต้องเรียนรู้ไวยากรณ์ (Syntax) เพื่อใช้กลไก Template ซึ่งปกติแล้วมีขอบเขตการใช้งานที่ง่ายกว่าการเรียนพื้นฐานของ PHP ลองพิจารณาโค้ดต่อไปนี้
<ul>
<?php foreach ($addressbook as $name): ?>
<li><?=$name?></li>
<?php endforeach; ?>
</ul>
เปรียบเทียบสิ่งนี้กับ Pseudo-Code (รหัสเทียม) ซึ่งถูกใช้ในกลไก Template
<ul>
{foreach from=$addressbook item="name"}
<li>{$name}</li>
{/foreach}
</ul>
ใช่แล้วตัวอย่างกลไก Template สะอาดกว่านิดหน่อย แต่มันต้องแลกกับประสิทธิภาพ ซึ่ง Pseudo-Code จะถูกแปลงกลับไปเป็น PHP เพื่อทำงาน ดังนั้นถ้าจุดมุ่งหมายหนึ่งเราคือ มีประสิทธิภาพมากที่สุด เราจึงเลือกที่ไม่บังคับใช้กลไก Template
CI ยังมีสามารถทำเป็นเอกสาร ซึ่งโดยปกติแล้วโปรแกรมเมอร์ที่รักในการเขียนโค้ดมักจะไม่ชอบในเรื่องของการจัดทำเอกสาร CI ก็สามารถจัดการให้เราได้
คุณสมบัติหลักที่มีใน CodeIgniter
- ระบบบนพื้นฐาน Model-View-Controller (MVC)
- รองรับ PHP 4
- แอพพลิเคชั่นเบาสุดขีด
- คุณสมบัติครบถ้วนสำหรับฐานข้อมูลและสนับสนุนหลายแพลตฟอร์ม
- สนับสนุนการใช้ฐานข้อมูลแบบ Active Record
- การตรวจสอบฟอร์มและข้อมูล
- ความปลอดภัยและระบบกลั่นกรอง XSS (Cross Site Scripting)
- การจัดการ Session
- คลาสส่งอีเมล์
สนับสนุนการแนบไฟล์, อีเมล์แบบ HTML/Text,
รองรับหลายโปรโตคอลพร้อมกัน (ส่งเมล์, SMTP
และ Mail)
และอีกมาก
- ไลบรารี่จัดการรูปภาพ (ตัด, ย่อ, หมุน, ฯลฯ). สนับสนุน GD, ImageMagick และ NetPBM
- คลาสอัพโหลดไฟล์ (File Uploading Class)
- FTP Class (คลาส FTP)
- Localization (หรือการทำหลายภาษา)
- Pagination (หมายเลขหน้า)
- Data Encryption (การเ้ข้ารหัสข้อมูล)
- Benchmarking (การทดสอบเพื่อวัดความสามารถในการประมวลผล)
- Full Page Caching (การเก็บหน้าทั้งหน้าอยู่ในแคช)
- Error Logging (การบันทึกข้อผิดพลาด)
- Application Profiling (การรวบรวมรายละเอียดของแอพพลิเคชั่น)
- Scaffolding (การทำโครงยกพื้น)
- Calendaring Class (คลาสปฎิทิน)
- User Agent Class (คลาสตัวแทนผู้ใช้)
- Zip Encoding Class (คลาสเข้ารหัส zip)
- Template Engine (คลาสกลไลแม่แบบ)
- Trackback Class (คลาสระบบติดตามลิงค์กลับ)
- XML-RPC Library (ไลบรารี่ XML-RPC)
- Unit Testing Class (คลาสทดสอบเฉพาะหน่วย)
- URL ที่เป็นมิตรกับเซิร์ชเอนจิ้น
- เส้นทาง URI
ที่ยืดหยุ่น
- สนับสนุนสำหรับ Hooks - (ตะขอ), สอบขยายคลาสและ Plugins
- ไลบรารี่ขนาดใหญ่สำหรับฟังก์ชั่น "ผู้ช่วย"
อ้างอิงจาก: http://codeigniter.in.th/user_guide/index.html
วันจันทร์ที่ 23 สิงหาคม พ.ศ. 2553
CakePHP: MVC คืออะไร
MVC (Model View Controller) เป็นสถาปัตยกรรมของการเขียนโปรแกรมที่แยกส่วนการทำงานแต่ละส่วนให้เป็นอิสระต่อกัน
Model เป็นส่วนที่ติดต่อกับฐานข้อมูล โดย Model จะรับคำสั่งมาจาก Controller ซึ่งเป็นคำสั่งในการทำงานกับฐานข้อมูล เช่น SELECT, INSERT, UPDATE หรือ DELETE เป็นต้น โดยหลังจาก Model ทำงานตามคำสั่งเรียบร้อยแล้วก็จะ Return ค่ากลับไปที่ Controller อีกครั้ง เพื่อให้ Controller ส่งให้ View ต่อไป
View เป็นส่วนหลักของ UI (User Interface) หรือส่วนติดต่อกับผู้ใช้ ซึ่ง View สามารถที่จะมี Template ของ Layout ที่แตกต่างกันไปได้ โดยข้อมูลต่างๆ จะถูกส่งมาจาก Controller แล้วนำมาแสดงผลที่ View เช่นเดียวกัน หากเป็นข้อมูลจากฟอร์ม (Form) ก็จะสร้างที่ View แล้วส่งต่อให้กับ Controller ต่อไป
Controller เป็น Business Logic หลักของโปรแกรม ซึ่งเป็นตัวเชื่อมระหว่าง View กับ Model เช่น การรรับค่าจากฟอร์มโดยฟอร์มอยู่ที่ View ส่งค่าให้กับ Controller แล้ว Controller ก็จะทำการสร้าง Logic ในการบันทึกข้อมูล แล้วส่งให้แก่ Model ซึ่ง Model ก็จะรับ Logic ในการบันทึกแล้วบันทึกข้อมูลลงฐานข้อมูลต่อไป
หลักการทำงานของ MVC
- เมื่อ Client มีการร้องขอผ่าน View
- ข้อมูลจะส่งผ่านไปหา Controller โดย Controller จะเป็นตัวจำแนก Action ต่างๆ หรือเป็น Business Logic ของระบบ
- จากนั้น Controller ก็จะร้องขอไปยัง Model จาก Action นั้นๆ เช่น ร้องขอการเลือกข้อมูลทั้งหมดจากตาราง
- เมื่อ Model รับการร้องขอก็จะทำการ Query ข้อมูลตามที่ Controller ส่งมา
- Model จะส่งข้อมูลที่ได้กลับมาหา Controller
- Controller ก็จะทำการ Set ค่าลงในตัวแปรเพื่อส่งให้ View ต่อไป
- View ก็จะนำตัวแปรเหล่านั้นไปทำการแสดงผลตามต้องการได้
Reference: