การพัฒนา Web Application และ REST API ด้วย Yii3 (Yii Framework 3)

การพัฒนา Web Application และ REST API ด้วย Yii3 (Yii Framework 3)
YII3-101

อบรมเชิงปฏิบัติการ 3 วัน สร้างระบบงานจริงด้วย Yii3 ตั้งแต่ติดตั้ง application template เข้าใจ DI Container, Middleware และ Router ต่อฐานข้อมูลด้วย Active Record และ Migration ทำระบบล็อกอินกับสิทธิ์ผู้ใช้ สร้าง REST API เขียนเทสต์ จนนำขึ้นเซิร์ฟเวอร์ด้วย Docker พร้อมกรณีศึกษาจากระบบสารบรรณอิเล็กทรอนิกส์ที่ HANUMANIT พัฒนาด้วย Yii3 และใช้งานจริง

18 ชั่วโมง ปานกลาง สอบถามค่าลงทะเบียน

วัตถุประสงค์

เข้าใจแนวคิดของ Yii3: DI Container, PSR-7/PSR-15 Middleware และการตั้งค่าด้วย yiisoft/config สร้าง Web Application จาก template yiisoft/app ทำ Route, Action, View และฟอร์มพร้อมการตรวจข้อมูล ต่อฐานข้อมูลด้วย yiisoft/db, Active Record และจัดการโครงสร้างตารางด้วย Migration ทำระบบล็อกอินและกำหนดสิทธิ์ผู้ใช้ด้วย yiisoft/user และ yiisoft/rbac สร้าง REST API จาก template yiisoft/app-api พร้อมยืนยันตัวตนด้วย token เขียนเทสต์ด้วย Codeception ตรวจโค้ดด้วย Psalm และนำระบบขึ้นเซิร์ฟเวอร์ด้วย Docker รับมือกับเรื่องที่เจอเมื่อใช้ Yii3 กับระบบจริง เช่น worker mode งานเบื้องหลัง และระบบหลายหน่วยงาน วางแผนย้ายหรือเชื่อมระบบเดิมที่เขียนด้วย Yii 2 มาใช้ Yii3 ได้อย่างปลอดภัย

กลุ่มเป้าหมาย

นักพัฒนาที่ใช้ Yii 2 อยู่แล้วและต้องการเริ่มโปรเจกต์ใหม่ด้วย Yii3 นักพัฒนา PHP ที่อยากใช้เฟรมเวิร์กสมัยใหม่ซึ่งยึดมาตรฐาน PSR เจ้าหน้าที่ไอทีและหัวหน้าทีมที่ต้องตัดสินใจเรื่องการย้ายระบบเดิมจาก Yii 2 พื้นฐานที่ควรมี: เขียน PHP เชิงวัตถุ (class, interface, namespace) และ SQL ได้ ใช้ Composer และ Git มาบ้าง เคยใช้ Yii 2 จะช่วยให้เรียนได้เร็วขึ้นแต่ไม่บังคับ

รายละเอียด

ทำไมต้องเรียนหลักสูตรนี้

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
  • 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 ให้ทดสอบง่ายและดูแลต่อได้
  • ฟอร์มและการตรวจข้อมูล
    • สร้างฟอร์มด้วย 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 และจัดการข้อผิดพลาดให้ผู้เรียกใช้เข้าใจง่าย
    • ใช้ฐานข้อมูลและสิทธิ์ชุดเดียวกับหน้าเว็บ
  • คุณภาพของโค้ด
    • เขียน 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 ยังอยู่ระหว่างพัฒนา หลักสูตรนี้จึงสอนเขียนโค้ดเองทั้งหมด

รอบที่เปิดรับสมัคร

ยังไม่มีรอบที่เปิดรับสมัคร ติดต่อทีมงาน เพื่อจัดอบรมเฉพาะหน่วยงานได้