ข้อแตกต่างระหว่าง Codeigniter 4 vs Codeigniter 3 และพื้นฐานการใช้งาน

ข้อแตกต่างระหว่าง Codeigniter4vsCodeigniter3-และพื้นฐานการใช้งาน
ข้อแตกต่างระหว่าง Codeigniter4vsCodeigniter3-และพื้นฐานการใช้งาน

เกริ่นก่อนว่า Codeigniter เป็น PHP MVC Framework ตัวแรก ๆ ที่เกิดขึ้นและเป็นเฟรมเวิร์คหลักในการพัฒนาเว็บไซต์ ที่ได้รับความนิยมอย่างแพร่หลายไปทั่วโลก

Codeigniter เวอร์ชั่นแรกที่เปิดให้ใช้งาน เกิดขึ้นตั้งแต่ปี 2006 และเวอร์ชั่นที่ได้รับความนิยมอย่างมากคือ เวอร์ชั่น 3 เปิดให้ใช้งานเมื่อปี 2015 หรือเมื่อ 5 ปีที่แล้ว ( ใช้ PHP เวอร์ชั่น 5.6 ) และออกเวอร์ชั่นล่าสุด คือ Codeigniter 4 เพื่อรองรับ PHP 7.2+ ซึ่งมีความแตกต่างอย่างสิ้นเชิงกับเวอร์ชั่นก่อนหน้านี้

ช่วงระยะเวลาระหว่างเวอร์ชั่น 2 กว่าจะออกเวอร์ชั่น 4 บนโลกอินเตอร์มีการเปลี่ยนแปลงเทคโนโลยีหลายอย่าง PHP มีการออกเวอร์ชั่น 7 ที่ใหม่กว่าและเสถียรกว่า ทำให้เกิดเฟรมเวิร์คที่ใหม่กว่าและรองรับ พีเอชพี 7 เกิดขึ้นมาทดแทน CI3 ที่ยังใช้ พีเอพีเวอร์ชั่น 5.6 อยู่ จนในที่สุด CI4 ก็เปิดให้ใช้งานในปี 2018 ซึ่งก็ถือว่าออกมาช้ากว่าเฟรมเวิร์คตัวอื่น ๆ มาก หลังจากเปลี่ยนทีมพัฒนา ( จาก EllisLab เป็น BCIT )

ด้วยโครงสร้างของภาษา PHP เวอร์ชั่น 7 ที่แตกต่างจาก PHP เวอร์ชั่น 5 อยู่พอสมควร ซึ่งอาจจะเป็นปัญหาสำหรับคนที่ต้องการเปลี่ยนจาก CI3 ไปใช้งาน CI4 เราจึงได้สรุป ข้อแตกต่าง การใช้งาน การตั้งค่าพื้นฐาน ระหว่าง 2 เวอร์ชั่น มาให้ดูเพื่อให้เห็นภาพชัดเจน และปรับใช้งานเวอร์ชั่นที่ใหม่กว่าได้ง่ายขึ้น

ข้อแตกต่างระหว่าง CI3 และ CI4

  • เรื่อง PHP Version ที่แตกต่างกัน CI3 ยังคงใช้ PHP 5.x ที่ไม่มีการ Support แล้ว ส่วน CI4 จะต้องเป็น PHP 7.2+ ขึ้นไปเท่านั้น
$minPHPVersion = '7.2';
if (phpversion() < $minPHPVersion)
{
	die("Your PHP version must be {$minPHPVersion} or higher to run CodeIgniter. Current version: " . phpversion());
}
  • Project Structure โครงสร้างโปรเจค File และ Folder ที่แตกต่างกัน ตามรูปด้านล่าง แต่คนที่ใช้ CI3 มาก่อน ก็คงพอจะเข้าใจได้ไม่ยาก
  • Development Mode ในขั้นตอนการพัฒนา CI3 จะทำงานที่ Root ของโปรเจค ส่วน CI4 จะทำงานที่ Public โฟลเด้อก่อน แล้วค่อยย้ายออกมาในเวอร์ชั่น Production ตัวอย่าง URL ตามรูปด้านล่าง
  • Project Setting การตั้งค่าพื้นฐานของโปรเจคที่แตกต่างกัน
    • Mode ปกติ CI3 จะตั้งค่าโหมด Test / Development / Production ได้ที่ไฟล์ index.php โดยตรงเลย ส่วน CI4 จะตั้งค่าที่ CI_ENVIRONMENT ไฟล์ .env
    • BaseURL ปกติ CI3 ตั้งค่าที่ application/config/config.php ส่วน CI4 จะตั้งค่าที่ app/Config/App.php
    • Writable Folder & File ปกติ CI3 เราจะต้องสร้างโฟลเด้อขึ้นมาเอง ทั้ง upload, cache, temp, sessions แล้วใช้ command chmod เพื่อให้เขียนไฟล์ลงไปได้ แต่ใน CI4 จะมีการจัดเก็บที่เป็นระเบียบมากขึ้น โดยจะเก็บไว้ที่โฟลเด้อ writable ( ตอนติดตั้งโปรเจคครั้งแรก ต้อง chmod 777 โฟลเด้อนี้ก่อน )
  • การ Autoloading โดยปกติใน CI3 จะต้องเขียน autoload เป็นไฟล์ ๆ ไป แต่ใน CI4 จะมีการใช้ namespace เต็มรูปแบบ ตรงนี้เองที่ทำให้การทำงานเร็วขึ้นกว่าเดิม ไม่จำเป็นต้องเขียน Load model, Load libraries ต่าง ๆ แล้ว ลองเปรียบเทียบการใช้งาน ให้เห็นความแตกต่างระหว่าง CI3 และ CI4 ตัวอย่างตามภาพด้านล่าง
  • การใช้งาน Model การ query ข้อมูลใน CI4 จะมีรูปแบบที่ได้มาตรฐานขึ้นกว่าเดิมมาก จะใช้คุณสมบัติของ model ต้นแบบที่สืบทอดมา ( extends model ) มากขึ้น ซึ่งสามารถดู properties ทั้งหมดได้ที่ system\Model.php
    • จากรูปด้านล่าง จะสังเกตุว่า CI4 มี เมธอด มาให้เราใช้งานค่อนข้างครบถ้วน โดยไม่ต้องเขียน เมธอดเพิ่มเข้ามาเลย เพียงแค่ระบุ Properties ให้ตรงตามความต้องการของเราเท่านั้น ก็สามารถเรียกใช้งานเมธอด รับข้อมูลได้เลย
  • การโหลด view ไม่ได้มีอะไรเปลี่ยนแปลงมาก เพียงแต่ CI4 จะมีการเขียนโหลด view ที่สั้นลงกว่าเดิมเท่านั้น
$this->load->view('welcome_message'); // โหลด view ใน CI3
return view('welcome_message'); // โหลด view ใน​ CI4
  • การผ่านค่าตัวแปรไปที่ view ยังมีรูปแบบการใช้งานเหมือนเดิม
$PAGE = [
    'title' => "My Title",
    'description'     => "My Description",
    'keyword'   => "My Keyword"
];
echo view('welcome_message', $PAGE);
  • สรุปการเปลี่ยนจาก CI3 มาใช้งาน CI4 เพื่อ Performance ที่ดีกว่า ปลอดภัยกว่า ใช้เวลาในการศึกษาไม่นานครับ ทั้งคนที่เคยใช้ CI3 หรือ ยังไม่เคยใช้มาก่อน สามารถทำความเข้าใจได้ไม่ยาก

Leave a Reply