อบรมเชิงปฏิบัติการ 3 วัน สร้างระบบงานจริงด้วย Yii3 ตั้งแต่ติดตั้ง application template เข้าใจ DI Container, Middleware และ Router ต่อฐานข้อมูลด้วย Active Record และ Migration ทำระบบล็อกอินกับสิทธิ์ผู้ใช้ สร้าง REST API เขียนเทสต์ จนนำขึ้นเซิร์ฟเวอร์ด้วย Docker พร้อมกรณีศึกษาจากระบบสารบรรณอิเล็กทรอนิกส์ที่ HANUMANIT พัฒนาด้วย Yii3 และใช้งานจริง
วัตถุประสงค์
กลุ่มเป้าหมาย
รายละเอียด
ทำไมต้องเรียนหลักสูตรนี้
Yii3 ออกเวอร์ชันเสถียรเมื่อวันที่ 31 ธันวาคม 2025 หลังพัฒนามาหลายปี ทีมผู้พัฒนาตั้งใจให้เป็นฐานที่ใช้งานได้อีกอย่างน้อยสิบปี แต่ Yii3 ไม่ใช่ Yii 2 ที่อัปเกรดเวอร์ชัน มันถูกเขียนใหม่ทั้งหมดเป็นชุดแพ็กเกจแยกกัน ใช้ PHP 8.2 ขึ้นไป และยึดมาตรฐาน PSR เช่น PSR-7 สำหรับ request/response และ PSR-15 สำหรับ middleware
อีกเหตุผลที่ต้องเริ่มตอนนี้คือรอบซัพพอร์ตของ Yii 2.0 ตามที่ yiiframework.com ประกาศ Yii 2.0 จะหยุดรับการแก้บั๊กในวันที่ 23 พฤศจิกายน 2026 เหลือเพียงการแก้ช่องโหว่ความปลอดภัย และหมดอายุในวันที่ 23 พฤศจิกายน 2027 ส่วน Yii3 มีแผนซัพพอร์ตถึงสิ้นปี 2035 ระบบใหม่ที่ต้องใช้งานไปอีกหลายปีจึงควรเริ่มบน Yii3
คนที่เขียน Yii 2 มานานจึงมักติดขัดในช่วงแรก เพราะสิ่งที่คุ้นเคยหายไป ไม่มี Yii::$app ให้เรียกจากทุกที่
ทุกอย่างได้มาผ่าน DI Container และการตั้งค่าแยกเป็นหลายไฟล์ หลักสูตรนี้พาข้ามช่วงนั้นด้วยการลงมือสร้างระบบจริงหนึ่งระบบตั้งแต่ต้นจนขึ้นเซิร์ฟเวอร์
พร้อมเทียบกับวิธีที่เคยทำใน Yii 2 ทุกขั้น เพื่อให้กลับไปเริ่มโปรเจกต์ใหม่ หรือวางแผนย้ายระบบเดิมได้อย่างมั่นใจ
สอนจากประสบการณ์ระบบจริงที่ใช้ Yii3
HANUMANIT พัฒนา ระบบสารบรรณอิเล็กทรอนิกส์ (saraban.thailocal.net) สำหรับองค์กรปกครองส่วนท้องถิ่นด้วย Yii3 บน PHP 8.5 และ PostgreSQL ระบบนี้มีทั้งงานรับ-ส่งหนังสือ ออกเลข ลงนามอิเล็กทรอนิกส์ สร้างไฟล์ PDF ดึงหนังสือจากอีเมล และแยกข้อมูลของหลายหน่วยงานไว้ในระบบเดียว ในห้องอบรมเราจะเปิดตัวอย่างการตัดสินใจจริงจากระบบนี้ เช่น
- จัดโค้ดตามงาน (domain) แยกโฟลเดอร์ตามเรื่อง เช่น หนังสือรับ หนังสือส่ง และการเกษียนหนังสือ แทนการกองทุกอย่างไว้ใน controllers/models
- เมื่อไรใช้ Active Record เมื่อไรเขียน Query เอง ระบบสารบรรณเลือกใช้
yiisoft/dbโดยตรงเพื่อคุม SQL ได้ละเอียด - FrankenPHP worker mode เร็วขึ้นมาก แต่โปรเซสอยู่ค้างข้าม request ต้องล้างสถานะทุกครั้ง ไม่อย่างนั้นข้อมูลผู้ใช้หรือหน่วยงานจะรั่วข้าม request
- งานเบื้องหลัง เช่น ส่งอีเมลและสร้าง PDF ด้วย Symfony Messenger + Redis เพราะแพ็กเกจคิวของ Yii3 ยังไม่ออกเวอร์ชันเสถียร
- สิทธิ์ที่เก็บในฐานข้อมูล ด้วย
yiisoft/rbac-dbให้ผู้ดูแลแต่ละหน่วยงานกำหนดบทบาทเองได้ - คุมคุณภาพก่อนขึ้นระบบ ด้วย Codeception, Psalm, Rector และ Jenkins
สิ่งที่จะได้ลงมือทำและผลลัพธ์กลับบ้าน
- ระบบงานตัวอย่าง 1 ระบบ มีหน้าเว็บสำหรับผู้ใช้ ฐานข้อมูล ระบบล็อกอิน สิทธิ์ตามบทบาท และ REST API ที่แอปมือถือหรือระบบอื่นเรียกใช้ได้
- โปรเจกต์ตั้งต้นที่ใช้งานต่อได้ ตั้งค่า Docker, Migration, เทสต์ และการตรวจโค้ดไว้พร้อม เอาไปเริ่มงานจริงได้ทันที
- ตารางเทียบ Yii 2 กับ Yii3 สิ่งที่ทำแบบเดิมใน Yii 2 ต้องเขียนอย่างไรใน Yii3
- เช็กลิสต์ประเมินการย้ายระบบ ใช้ตัดสินใจว่าระบบเดิมควรย้าย เขียนใหม่ หรือเชื่อมต่อผ่าน API
- ใบประกาศนียบัตรออนไลน์ ที่ตรวจสอบได้ สำหรับผู้ที่เข้าอบรมครบ
โครงสร้างเนื้อหาหลักสูตร (3 วัน · 18 ชั่วโมง)
วันที่ 1: แนวคิดของ Yii3 และ Web Application แรก
- รู้จัก Yii3
- อะไรเปลี่ยนไปจาก Yii 2: แพ็กเกจแยกส่วน ไม่มี service locator กลาง และยึดมาตรฐาน PSR
- เตรียมเครื่อง: PHP 8.2 ขึ้นไป, Composer, Docker
- สร้างโปรเจกต์ด้วย
composer create-project yiisoft/appและรันด้วย./yii serveหรือ Docker - อ่านโครงสร้างโฟลเดอร์
config/,src/,public/และการตั้งค่าแยกตามสภาพแวดล้อมด้วยไฟล์.env
- หัวใจของ Yii3
- DI Container (
yiisoft/di) และการฉีด dependency ผ่าน constructor แทนการเรียกYii::$app - การตั้งค่าด้วย
yiisoft/config: params, di และการรวม config จากแพ็กเกจต่าง ๆ - วงจรของ request: PSR-7 request/response และ PSR-15 middleware
- DI Container (
- Route, Action และ View
- กำหนดเส้นทางด้วย
yiisoft/routerทั้งพารามิเตอร์ กลุ่มเส้นทาง และการสร้าง URL - เขียน Action และส่งข้อมูลไปแสดงผลด้วย
yiisoft/viewและyiisoft/yii-view-renderer - Layout, Asset และการทำหน้าเว็บภาษาไทย
- กำหนดเส้นทางด้วย
วันที่ 2: ฐานข้อมูล ฟอร์ม และระบบสมาชิก
- ทำงานกับฐานข้อมูล
- ต่อ MySQL/MariaDB หรือ PostgreSQL ด้วย
yiisoft/dbและใช้ Query Builder - ออกแบบตารางด้วย ER Diagram แล้วสร้างด้วย Migration (
yiisoft/db-migration) - Active Record (
yiisoft/active-record): สร้าง อ่าน แก้ไข ลบ และความสัมพันธ์ระหว่างตาราง - เทียบกับการเขียน Query เองแบบที่ระบบสารบรรณใช้ และเลือกให้เหมาะกับงาน
- แยกโค้ดเป็นชั้น Repository และ Service ให้ทดสอบง่ายและดูแลต่อได้
- ต่อ MySQL/MariaDB หรือ PostgreSQL ด้วย
- ฟอร์มและการตรวจข้อมูล
- สร้างฟอร์มด้วย
yiisoft/formและyiisoft/form-model - กำหนดกฎตรวจข้อมูลด้วย
yiisoft/validatorผ่าน PHP Attributes - แสดงรายการพร้อมแบ่งหน้าและเรียงลำดับด้วย
yiisoft/dataและyiisoft/yii-dataview
- สร้างฟอร์มด้วย
- ระบบสมาชิกและสิทธิ์
- ล็อกอิน ล็อกเอาต์ และจัดการรหัสผ่านอย่างปลอดภัยด้วย
yiisoft/user - กำหนดบทบาทและสิทธิ์ด้วย
yiisoft/rbacและเก็บในฐานข้อมูลด้วยyiisoft/rbac-dbแล้วตรวจสิทธิ์ใน middleware - ป้องกัน CSRF และข้อผิดพลาดด้านความปลอดภัยที่พบบ่อย
- ล็อกอิน ล็อกเอาต์ และจัดการรหัสผ่านอย่างปลอดภัยด้วย
วันที่ 3: REST API การทดสอบ และการนำขึ้นใช้งานจริง
- สร้าง REST API
- เริ่มจาก template
yiisoft/app-apiออกแบบ endpoint และรูปแบบ JSON ที่สม่ำเสมอ - ยืนยันตัวตนด้วย token ผ่าน
yiisoft/authและจัดการข้อผิดพลาดให้ผู้เรียกใช้เข้าใจง่าย - ใช้ฐานข้อมูลและสิทธิ์ชุดเดียวกับหน้าเว็บ
- เริ่มจาก template
- คุณภาพของโค้ด
- เขียน Unit test และ Functional test ด้วย Codeception ที่ติดมากับ template
- ตรวจโค้ดด้วย Psalm ก่อนส่งงาน
- คำสั่ง Console ของตัวเองด้วย
yiisoft/yii-consoleเช่น งานตั้งเวลาและนำเข้าข้อมูล
- นำขึ้นเซิร์ฟเวอร์จริง
- ตั้งค่าสภาพแวดล้อม production แคช และบันทึก log
- นำขึ้นด้วย Docker และ FrankenPHP ที่ template ใช้อยู่แล้ว
- เปิด worker mode อย่างปลอดภัย: ล้างสถานะทุก request และเทสต์ที่จับปัญหาข้อมูลรั่วข้าม request
- งานเบื้องหลังด้วย Symfony Messenger + Redis และ CI/CD ด้วย Jenkins ตามแบบระบบสารบรรณ
- ย้ายจาก Yii 2 มา Yii3
- เทียบแนวคิดทีละเรื่อง: Controller, ActiveRecord, Widget, Module, RBAC และ Gii
- สามแนวทาง: เขียนใหม่ทั้งระบบ ย้ายทีละส่วน หรือให้ระบบเดิมกับระบบใหม่คุยกันผ่าน API
- สิ่งที่ Yii3 ยังไม่มีให้เหมือน Yii 2 และวิธีรับมือ
สิ่งที่ต้องเตรียมสำหรับเข้าอบรม
- คอมพิวเตอร์โน้ตบุ๊ก Windows 10/11, macOS หรือ Linux แรมอย่างน้อย 8 GB
- ติดตั้ง PHP 8.2 ขึ้นไป, Composer, Git, Docker Desktop และโปรแกรมแก้ไขโค้ด เช่น VS Code หรือ PhpStorm (ทีมงานส่งคู่มือติดตั้งให้ก่อนวันอบรม)
- บัญชี GitHub สำหรับเก็บโปรเจกต์ที่ทำในห้อง
หมายเหตุ ผู้ที่ยังไม่เคยใช้ Yii มาก่อนแนะนำให้เรียนหลักสูตร การพัฒนา Web-based Application ด้วย Yii Framework 2 ก่อน หรือมีพื้นฐาน PHP เชิงวัตถุที่แน่นพอ Yii3 ยังพัฒนาต่อเนื่อง เนื้อหาจะปรับตามเวอร์ชันล่าสุดของแพ็กเกจในช่วงที่เปิดอบรม เครื่องมือสร้างโค้ดอัตโนมัติ (Gii) ของ Yii3 ยังอยู่ระหว่างพัฒนา หลักสูตรนี้จึงสอนเขียนโค้ดเองทั้งหมด