เนื้อหาต่อไปนี้ เราจะมาดูเกี่ยวกับการติดตั้ง
และใช้งาน CodeIgniter 4 ซึ่งเป็นเวอร์ชั่นอัพเดทล่าสุด
ของ CodeIgniter ทั้งนี้ทั้งนั้น เราเคยทำเนื้อหา
เกี่ยวกับการใช้งาน CodeIgniter 3 มาแล้ว ซึ่งยังสามารถใช้งาน
ได้เป็นอย่างดี หากสนใจสามารถศึกษาได้ที่ Tag บทความ
ในหัวข้อ CodeIgniter 3 ตามลิ้งค์ด้านล่าง
บทความเกี่ยวกับ CodeIgniter 3
เนื้อหาของ CodeIgniter 3 โดยส่วนใหญ่ในบางเนื้อหา สามารถนำมาปรับประยุกต์
ใช้งานร่วมกับ CodeIgniter 4 ได้
ความต้องการระบบ สำหรับ CodeIgniter 4
ระบบ Server ที่รองรับการใช้งาน CodeIgniter 4 จะประกอบด้วยเบื้องต้นดังนี้
- เป็น PHP 7.2 ขึ้นไป
- มีการติดตั้ง และ เปิดใช้งาน *intl*และ *mbstring* extension
ดูเพิ่มเติม Server Requirements
ซึ่งในการแนะนำการใช้งาน เราจะใช้ร่วมกับการจำลอง Server ด้วย xampp แนวทางติดตั้งตามลิ้งค์ด้านล่าง
ติดตั้ง xampp จำลอง server สำหรับนักพัฒนาเว็บด้วย php http://niik.in/660
https://www.ninenik.com/content.php?arti_id=660 via @ninenik
นอกจากนั้น เราจะทำการสร้าง vitual host เพื่อจำลองการทำงานเสมือนจริง โดยในที่ใช้ชื่อโดเมนทดสอบว่า
https://www.mysslweb.com โดยใช้วิธีการสร้าง Virtual Host ตามลิ้งค์ด้านล่าง ที่หัวข้อ "การกำหนด Virtual Host"
ตั้งค่า xampp ให้รองรับ SSL แบบ Self Signed Certificate http://niik.in/980
https://www.ninenik.com/content.php?arti_id=980 via @ninenik
โดยไฟล์ของ CodeIgniter 4 จะอยู่ในโฟลเดอร์ C > xampp > htdocs > mysslweb
และการเรียกไปยังไฟล์ index.php ก็ควรจะชี้ไปที่ DocumentRoot "C:\xampp\htdocs\mysslweb"
แต่เนื่องจากใน CodeIgniter 4 จะให้ความสำคัญเรื่องความปลอดภัยเป็นอันดับต้น จึงมีการกำหนดโฟลเดอร์
public และมีไฟล์ index.php หรือไฟล์ตั้งต้นอยู่ในโฟลเดอร์ดังกล่าว ดังนั้น ในการกำหนด Virtual Host เราจะเปลี่ยน
ค่าเล็กน้อย โดยเพิ่ม path ของโฟลเดอร์ public ต่อเข้าไป จะได้ในส่วนของไฟล์
C > xampp > apache > conf > extra > httpd-vhosts.conf
ประมาณนี้
<VirtualHost *:80> ServerAdmin webmaster@mysslweb.com DocumentRoot "C:\xampp\htdocs\mysslweb\public" ServerName mysslweb.com ServerAlias www.mysslweb.com ErrorLog "logs/mysslweb.com-error.log" CustomLog "logs/mysslweb.com-access.log" common </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@mysslweb.com DocumentRoot "C:\xampp\htdocs\mysslweb\public" ServerName mysslweb.com ServerAlias www.mysslweb.com SSLEngine on SSLCertificateFile "C:\xampp\apache\conf\ssl.crt\mysslweb.com.crt" SSLCertificateKeyFile "C:\xampp\apache\conf\ssl.key\mysslweb.com.key" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> ErrorLog "logs/mysslweb.com-error.log" CustomLog "logs/mysslweb.com-access.log" common </VirtualHost>
นั่นคือเมื่อเราเรียกไปยังโดนเมน https://www.mysslweb.com ก็จะชี้ไปที่โฟลเดอร์ mysslweb\public นั่นเอง
เมื่อเราเตรียมในส่วนของ server และ domain จำลองเรียบร้อยแล้ว ต่อไปก็เป็นส่วนของการติดตั้ง CodeIgniter 4
การติดตั้ง CodeIgniter 4
สำหรับรูปแบบการติดตั้ง จะขอยกมา 2 รูปแบบคือ การติดตั้งแบบ กำหนดเองหรือ manual กับ การติดตั้งโดยใช้
ตัวจัดการ package หรือ Composer ข้อดีข้อเสีย ของทั้งสองวิธีก็แตกต่าง กันไป สามารถเลือกได้ตามต้องการ
ซึ่งการกำหนดเอง มีรูปแบบไม่ยุ่งยาก เพียงเข้าไปดาวน์โหลดไฟล์ CodeIgniter 4 มาจากนั้นทำการแตกไฟล์ ไปไว้ใน
โฟลเดอร์โปรเจ็ค เสร็จแล้วก็ทำการ รันใช้งานได้ทันที ข้อเสียเปรียบของวิธีนี้ ก็คือถ้ามีการอัพเดท เราจำเป็นต้องจัดการ
ส่วนต่างๆ ด้วยตัวเอง หลักๆ คือการ copy โฟลเดอร์ system ของเวอร์ชันใหม่มาแทนตัวเดิม และไล่เช็คการตั้งค่าในโฟลเดอร์
app/Config ตามการเปลี่ยนแปลงที่เกิดขึ้น
ส่วนการใช้งาน Composer ก็จะสะดวกด้วยการติดตั้งผ่าน คำสั่งง่ายๆ และหากมีการอัพเดทเวอร์ชั่น ก็สามารถใช้คำสั่งอัพเดท
ผ่าน command line ได้โดยง่าย แต่ก็ยังจำเป็นต้องไล่ตรวจสอบการเปลี่ยนแปลงในโฟลเดอร์ app/Config อยู่เหมือนกัน
จากที่ลองทดสอบ การใช้งาน composer จะมีดาวน์โหลด package ต่างๆ ที่เกี่ยวข้องมาค่อนเยอะพอสมควร สำหรับการสร้าง
โปรเจ็คเริ่มต้น แต่เราก็เลือกที่จะใช้แบบกำหนด “–no-dev” เพื่อใช้เฉพาะ package ที่จำเป็นได้
ในความเห็นส่วนตัว ถ้าเราต้องการจะจัดการหรือใช้งานโปรเจ็คไม่ใหญ่มาก และไม่ต้องการอัพเดทตามเวอร์ชั่นใหม่ บ่อยๆ การ
ติดตั้งแบบกำหนดเองก็ถือว่าเหมาะสม แต่ถ้าต้องการความรวดเร็ว และรองรับการอัพเดทเวอร์ชั่นใหม่ๆ การติดตั้งแบบ composer
ก็ถือได้ว่าเป็นวิธีที่เหมาะสมเช่นกัน
จะแนะนำการติดตั้งทั้ง 2 วิธีเป็นแนวทาง ดังต่อไปนี้
การติดตั้งและใช้งานแบบ Manual กำหนดเอง
ให้เราไปทำการดาวน์โหลดเวอร์ชั่นล่าสุด หรือเวอร์ชั่นที่จะใช้งานได้ที่
ทำการดาวน์โหลด และแตกไฟล์ไปยังโฟลเดอร์โปรเจ็คของเรา
ทดสอบเรียกใช้งานผ่าน Domain ที่เราจำลองการใช้งาน หากไม่มีอะไรผิดพลาด จะได้ผลลัพธ์ดังรูป
จะเห็นว่ามีขั้นตอนเริ่มตั้นไม่ยุ่งยาก
การติดตั้งผ่าน Composer
เพื่อลดการโหลด package มากเกินไปจะเพิ่ม option ในการติดตั้งโดยต่อท้ายเป็น “–no-dev”
ซึ่งในการติดตั้งผ่าน composer จะเป็นการสร้างโฟลเดอร์โปรเจ็คไปในตัว ดังนั้น เราจะต้องเรียกใช้คำสั่ง
composer ผ่าน command line โดยให้อยู่ที่ path C > xampp > htdocs
และใช้คำสั่งติดตั้งดังนี้
composer create-project codeigniter4/appstarter mysslweb --no-dev
รูปแบบคือ composer create-project codeigniter4/appstarter [ชื่อโฟลเดอร์โปรเจ็ค] --no-dev
หลังจากติดตั้งเรียบร้อย เราก็จะได้ไฟล์ต่างๆ ในโฟลเดอร์โปรเจ็ค ดังรูป
จะเห็นว่าโฟลเดอร์ที่เพิ่มเข้ามา จะแตกต่างจากวิธีแรก มีส่วนของ .github tests และ vendor เพิ่มเข้ามาซึ่งด้านในโฟลเดอร์
vendor ก็จะมี package ที่จำเป็นเบื้องต้น
หากไม่มีอะไรผิดพลาด เมื่อทดสอบรันเว็บ ก็จะแสดงผลเช่นเดียวกับวิธีแรก
ในที่นี้ เราจะใช้โค้ดจากวิธีการใช้งานผ่าน composer เป็นตัวตั้งต้น สำหรับแนะนำต่อไป
โดยหากมีเวอร์ชั่นใหม่ๆ ออกมา และเราต้องการอัพเดท เป้นเวอร์ชั่นล่าสุด ก็สามารถใช้คำสั่ง
composer update --no-dev
เพื่อทำการอัพเดทได้
ในการใช้งาน CodeIgniter 4 จะมีโหมดการใช้งานด้วยกัน 2 โหมดหลัก คือ production และ development ซึ่งค่าเริ่มต้นจะ
อยู่ในโหมด production ดังนั้น ให้ขั้นตอนการพัฒนา เพื่อให้สามารถเห็นส่วนของ การแจ้งเตือน error ต่างๆ เราต้องปรับให้อยู่ใน
โหมด development ก่อน ดังนี้
ให้แก้ไขไฟล์ที่ชื่อ env โดยเปลี่ยนชื่อเป็น .env หรือไฟล์นามสกุล env จากนั้นให้เปิดโดย text editor เพื่อแก้ไข ในส่วนของ
# CI_ENVIRONMENT = production
ตัด comment ที่กำหนดโดยตัว # ออก แล้วเปลี่ยนค่าเป็น development จะได้เป็น ดังนี้
CI_ENVIRONMENT = development
* นอกจากสองโหมดข้างต้น ยังมีโหมด testing สำหรับทดสอบอีกด้วย
ขออธิบายก่อนว่า ไฟล์ .env จะเป็นตัวช่วยให้เรากำหนดค่าต่างๆ ที่ใช้สำหรับทดสอบ โดยจะถูกเรียกใช้หรือ override ค่าที่กำหนด
ในส่วนที่อยู่ในโฟลเดอร์ app/Config กล่าวคือ ค่าต่างๆ ที่ใช้งานบน server จริงที่กำหนดในไฟล์ที่อยู่ในโฟลเดอร์ app/config ไม่ว่าจะ
เป็นชื่อโดเมนจริง ที่กำหนดในไฟล์ App.php ชื่อผู้ใช้และรหัสผ่าน การเชื่อมต่อฐานข้อมูลในไฟล์ Database.php จะถูกแทนที่ด้วยค่า
ทดสอบที่กำหนดในไฟล์ .env นั่นเอง
ในที่นี้สมมติ แก้ไขในส่วนของ app.baseURL เพิ่มเติม ในไฟล์ .env ดังนี้
ต่อไปเราจะลองไปทดสอบแก้ไขโค้ดการแสดงผลในไฟล์
app > Views > welcome_message.php
ทดสอบใช้งาน จะแสดงผลลัพธ์ดังรูป ค่า baseURL จะถูก override ด้วยค่าที่กำหนดในไฟล์ .env
ต่อไป เราจะลองดูการทำงานในโหมด developer เมื่อเกิด error ขึ้น โดยแทรกโค้ดดังนี้เพื่อจำลองการ error
ผลลัพธ์ที่ได้ จะช่วยให้เราสามารถแก้ไข หรือทำการ Debugging จาก error ที่เกิดขึ้นได้ง่าย
หากอยู่ในโหมด production จะแสดงผลัพธ์เป็นดังนี้
ตอนนี้เราได้ทำความคุ้นเคย และรู้จักกับ CodeIgniter 4 เบื้องต้นไปแล้ว เนื้อหาในตอนหน้าจะเป็นอะไร รอติดตาม