Laracon US 2024 จัดเมื่อปลายเดือน ส.ค. 2024 keynote ของ Taylor Otwell ตรงกับเช้าวันที่ 28 ส.ค. ตามเวลาไทย ผมดู livestream แล้วจดเรื่องสำคัญไว้ในโพสต์นี้ ส่วนคลิปเต็มดูย้อนหลังได้ที่ช่อง Laravel
Laravel มีพนักงาน 30 กว่าคน และติดตั้งกันวันละ 250,000 ครั้ง

ต้นปี 2024 บริษัท Laravel มีพนักงานแค่ 10 คน พอถึงวันงานมีมากกว่า 30 คนแล้ว
ยอดติดตั้ง Laravel ผ่าน composer เพิ่มจากวันละ 6,000 ครั้งในปี 2014 เป็นวันละ 250,000 ครั้งในเดือน ส.ค. 2024


VS Code มี Laravel extension ทางการแล้ว
ที่ผ่านมาเวลาเขียน PHP ใน VS Code เราต้องลง extension หลายตัวกว่าจะช่วยได้ดีพอ บนเวที Taylor ประกาศว่าทีม Laravel จะทำ extension ทางการสำหรับ VS Code ออกมาเอง
ใน demo มีทั้ง quick fix, ลิงก์ไปยังไฟล์ที่เกี่ยวข้อง, ข้อความ translation และ autocomplete ในหลายส่วน เช่น Eloquent, relation และ test

รัน test ได้จากใน editor เลย test ที่ fail จะขึ้นข้อความตรงบรรทัดนั้น

ฟีเจอร์ใหม่ใน Laravel ที่โชว์บนเวที
- Temporary URL บน local disk เดิม
Storage::temporaryUrl()ใช้ได้กับ S3 เท่านั้น ตอนนี้ใช้กับ disk แบบlocalได้ด้วย (เอกสาร) - Container attributes inject ค่าอื่นที่ไม่ใช่ class เข้ามาใน constructor ได้เลย เช่น user ที่ล็อกอินอยู่ (
#[CurrentUser]), database connection (#[DB]) หรือค่าใน config (#[Config]) (เอกสาร)
![Constructor ของ DeployApplication รับ #[CurrentUser] User, #[DB('mysql')] Connection และ #[Config('services.github.token')] string แล้ว dd ข้อมูล user ออกมาในเบราว์เซอร์](/storage/88/OQ431eIsGQxk5uzEkwLRS3VktxSMzaQQop0j2A3p.png)
chaperone()ใส่ไว้ที่ relation แบบhasManyแล้ว Laravel จะผูก parent กลับเข้าไปใน child ให้เอง เวลาวนลูป$user->postsแล้วเรียก$post->userในแต่ละรอบ จะไม่ queryusersซ้ำจนเป็น N+1 (เอกสาร)

defer()ปกติถ้า request ต้องทำงานเบื้องหลังบางอย่าง เรามักสร้าง job ส่งเข้า queue เพื่อไม่ให้ response ช้าdefer()ให้ Laravel รันโค้ดหลังส่ง response กลับไปที่เบราว์เซอร์แล้ว งานเล็ก ๆ บางอย่างจึงไม่ต้องมี job หรือ queue worker (เอกสาร)

Concurrencyบางทีเราอยากดึงข้อมูลหลายอย่างพร้อมกันโดยไม่ต้องรอทีละตัว เช่น เรียก API หลายที่แล้วค่อยรวมผลConcurrency::run()รัน closure เหล่านั้นพร้อมกัน แต่ละตัวทำงานใน PHP process แยกเบื้องหลัง (เอกสาร)

Cache::flexible()ส่งค่าเดิมใน cache ให้ผู้ใช้ไปก่อน แล้วคำนวณค่าใหม่เบื้องหลังเมื่อค่าเก่าเกินเวลาที่ตั้งไว้ (stale-while-revalidate) อยู่ในสไลด์สรุปท้ายงานในชื่อ caching improvements (เอกสาร)
Inertia 2.0 มีฟีเจอร์ใหม่ 6 อย่าง
Taylor โชว์ฟีเจอร์ใหม่ของ Inertia 2.0 ผ่านแอป demo ทีละหน้า
1. Async request
request แบบใหม่ไม่บล็อกหน้าเว็บ ไม่ขึ้น progress bar และ reload ทุกตัวเป็น async โดยค่าเริ่มต้น

2. Polling
ดึงข้อมูลใหม่จาก server เป็นระยะ ๆ และลดความถี่ลงเองเมื่อแท็บอยู่เบื้องหลัง

3. WhenVisible
โหลด prop เมื่อ element นั้นเลื่อนเข้ามาในหน้าจอ ใช้ Intersection Observer API อยู่เบื้องหลัง

4. Infinite scrolling
ตัวช่วยสำหรับทำหน้าเลื่อนลงแล้วโหลดเพิ่มเรื่อย ๆ ฟีเจอร์นี้ไม่ทันรุ่น 2.0 ตอนออกจริง ทีมบอกว่าจะตามมาในรุ่น 2.1 ตอนนี้มี infinite scroll ในเอกสารแล้ว

5. Prefetching
โหลดหน้าถัดไปไว้ก่อนตั้งแต่ผู้ใช้เอาเมาส์ไปชี้ลิงก์ หรือตั้งแต่หน้าปัจจุบันโหลดเสร็จ พอคลิกจริงหน้าก็ขึ้นทันที


6. Deferred props
ส่งหน้าเว็บไปก่อน แล้วค่อยโหลด prop ที่ช้าหรือไม่สำคัญตามมาทีหลัง หน้าแรกจึงขึ้นเร็วขึ้น (เอกสาร)
ตอนนั้น Taylor บอกว่า Inertia 2.0 จะออกในเดือน ต.ค. 2024
สไลด์สรุปของใหม่ทั้งหมด

One more thing คือ Laravel Cloud
นอกจากของใหม่ข้างบน Taylor ยังมี one more thing มาเปิดตัวในวันนั้น คือ Laravel Cloud

Laravel Cloud เป็นแพลตฟอร์ม deploy แอป Laravel โดยที่เราไม่ต้องดูแล server เอง คล้าย ๆ Vercel ฝั่ง JavaScript ต่างจาก Forge ที่ยังต้องมี server ของเราเอง

Taylor บอกว่าจาก sign up จนแอปขึ้นออนไลน์ใช้เวลาไม่ถึง 1 นาที ดึงโค้ดจาก GitHub repository มา deploy ได้ทันที

แอปที่ deploy จะได้โดเมนย่อยของ laravel.cloud มาใช้ทันที ตอนนั้นประกาศว่าจะเปิดให้ใช้ใน Q4 ปี 2024 ดูรายละเอียดได้ที่ laravel.com/cloud และงานปีถัด ๆ ไปที่ laracon.us






