ใครที่เป็นทีม Laravel ต้องขอบอกเลยว่าภายในปี 2562 หรือ 2019 Laravel มีพัฒนาการที่ไวมากตั้งแต่ปล่อยเวอร์ชั่น 5.8 แล้วยังไม่ทันไรก็คลอดเวอร์ชั่น 6 (ปัจจุบัน 6.9.x) ณ วันที่ 30 ธันวาคม 2562 เล่นเอาซะอัพเกรดตามกันแทบไม่ทัน แต่เอาละผมจะมาอัพเดทความคืบหน้าล่าสุดของ Laravel 6.9.x ในตอนสิ้นปี 2562 กัน
Laravel 6 มาพร้อมกับ Flag LTS
LTS(Long Term Support) หรือความหมายก็คือเวอร์ชั่นนี้จะมีการซัพพอร์ตหรือดูแลในระยะยาว นั่นหมายความว่าถ้าเราใช้เวอร์ชั่น 6.x จะมีการอัพเดทเวอร์ชั่นและแก้ไขด้านความปลอดภัยให้อีกหลายปีจนกว่าจะออก LTS เวอร์ชั่นใหม่ สำหรับ Laravel 6 นั้นมีการประกาศว่า จะมีการอัพเดทและแก้บัคจนถึงวันที่ 3 กันยายน 2564 และการแก้ไขด้านความปลอดภัยของตัว Framework จนถึงวันที่ 3 กันยายน 2565 เรียกว่านานพอสมควรเพราะฉะนั้นใครที่กำลังสนใจ Laravel Framework แนะนำติดตั้งเวอร์ชั่น 6 ไปเลยครับ
ส่วนเวอร์ชั่น LTS ก่อนหน้าคือ 5.5 จะมีการซัพพอร์ตจนถึง 30 สิงหาคม 2563 เพราะฉะนั้นถ้าใครจะอัพเกรด 5.5 ไป 6.9.x ควรเริ่มทำได้แล้วครับ
ตารางแสดงข้อมูลระยะเวลาการอัพเดท
Version | Release | Bug Fixes Until | Security Fixes Until |
---|---|---|---|
V1 | June 2011 | – | – |
V2 | September 2011 | – | – |
v3 | February 2012 | – | – |
v4 | May 2013 | – | – |
5.0 | Feb 4th, 2015 | Aug 4th, 2015 | Feb 4th, 2016 |
5.1 (LTS) | Jun 9th, 2015 | Jun 9th, 2017 | Jun 9th, 2018 |
5.2 | Dec 21st, 2015 | Jun 21st, 2016 | Dec 21st, 2016 |
5.3 | Aug 23rd, 2016 | Feb 23rd, 2017 | Aug 23rd, 2017 |
5.4 | Jan 24th, 2017 | Jul 24th, 2017 | Jan 24th, 2018 |
5.5 (LTS) | Aug 30th, 2017 | Aug 30th, 2019 | Aug 30th, 2020 |
5.6 | Feb 7th, 2018 | Aug 7th, 2018 | Feb 7th, 2019 |
5.7 | Sep 4, 2018 | Feb 4th, 2019 | Sep 4th, 2019 |
5.8 | Feb 26th, 2019 | Aug 26th, 2019 | Feb 26th, 2020 |
6.0 (LTS) | Sept 3rd, 2019 | Sept 3rd, 2021 | Sept 3rd, 2022 |
เปลี่ยนวิธีกำหนด Version ของ Framework เป็นแบบ Semantic Versioning
สำหรับ Semantic Versioning ไม่ได้เปลี่ยนแค่ตัว Laravel Framework อย่างเดียวนะครับตัว packages ต่างๆที่เกี่ยวข้องก็จะเปลี่ยนวิธีการกำหนด version เช่นกัน
เปลี่ยนหน้าแสดง Error เป็น Ignition Error Page
Ignition คือ open source ที่จัดการแสดงผล error ออกมาเป็นหน้าตาที่สวยงาม แถมสามารถแสดงผล error ได้ละเอียดขึ้นด้วย ส่วนใครที่ไม่ชินต้องฝึกใช้ตัวใหม่แล้วละครับ เพราะเวอร์ชั่นหลังจากนี้จะใช้การแสดงผลแบบนี้ทั้งหมด
Improved Authorization Responses
คือการเพิ่มความสามารถในการอนุญาติสิทธิผ่าน Facade Gate โดยมี methods ใหม่เพิ่มขึ้นมาคือ Gate::inspect ทำให้เรา จัดการ Response ไปหา User ได้ง่ายขึ้นครับ
Job Middleware
ใครที่ใช้ Queue อยู่แล้วท่าน Taylor Otwell ได้ช่วยสร้าง job middleware สำหรับจัดการข้อมูลก่อนที่จะส่งไปหา job ได้คล้ายๆกับ middleware ของ Request เลย
Lazy Collections
ช่วยจัดการ Collections ขนาดใหญ่ซึ่งปกติแล้วเวลาเราใช้งานตัว Collection จะใช้งาน memory เยอะมากเพราะจะโหลดข้อมูลทั้งหมดลง memory ในครั้งเดียวแต่ตัว Lazy Collections จะมาช่วยให้การเก็บข้อมูลลง Memory ดีขึ้นโดยการเก็บเฉพาะตัวที่เรียกใช้งานเท่านั้น
Eloquent Subquery Enhancements
อธิบายง่ายที่สุดและเห็นภาพข้อยกตัวอย่างคือการ Select ใน select นั่นเองโดยตัวอย่างอื่นๆสามารถดูได้จากลิงก์นี้ครับ Subquery Enhancements ด้านล่างเป็นตัวอย่างการ select ใน select ครับ
Destination::addSelect(['last_flight' => Flight::select('name')
->whereColumn('destination_id', 'destinations.id')
->orderBy('arrived_at', 'desc')
->limit(1)
])->get();
คือเราเพิ่ม column last_flight ใน destination model และตัว column last_flight มาจากการ select ข้อมูลจาก model flight นั้นเอง
Laravel UI
แยก Package Authentication, Bootstrap, vuejs ออกจาก Package หลักโดยถ้าเราติดตั้ง Laravel ใหม่เราจะไม่มี Bootstrap และ Vuejs ติดมาตอนติดตั้งเลย แต่เราสามารถติดตั้งแยกได้สามารถอ่านวิธีได้จากบทความนี้ครับ