มีอะไรใหม่บ้างใน Laravel เวอร์ชั่น 6

มีอะไรใหม่ใน Laravel 6 บ้าง
มีอะไรใหม่ใน Laravel 6 บ้าง
รูปภาพจาก https://laravel-news.com/

ใครที่เป็นทีม 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 ควรเริ่มทำได้แล้วครับ

ตารางแสดงข้อมูลระยะเวลาการอัพเดท

VersionReleaseBug Fixes UntilSecurity Fixes Until
V1June 2011
V2September 2011
v3February 2012
v4May 2013
5.0Feb 4th, 2015Aug 4th, 2015Feb 4th, 2016
5.1 (LTS)Jun 9th, 2015Jun 9th, 2017Jun 9th, 2018
5.2Dec 21st, 2015Jun 21st, 2016Dec 21st, 2016
5.3Aug 23rd, 2016Feb 23rd, 2017Aug 23rd, 2017
5.4Jan 24th, 2017Jul 24th, 2017Jan 24th, 2018
5.5 (LTS)Aug 30th, 2017Aug 30th, 2019Aug 30th, 2020
5.6Feb 7th, 2018Aug 7th, 2018Feb 7th, 2019
5.7Sep 4, 2018Feb 4th, 2019Sep 4th, 2019
5.8Feb 26th, 2019Aug 26th, 2019Feb 26th, 2020
6.0 (LTS)Sept 3rd, 2019Sept 3rd, 2021Sept 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 ติดมาตอนติดตั้งเลย แต่เราสามารถติดตั้งแยกได้สามารถอ่านวิธีได้จากบทความนี้ครับ

เกี่ยวกับผู้เขียน

ITTHIPAT

สวัสดีครับผม อิทธิพัทธ์ (เป้) ชอบหาเทคนิคต่างๆที่ทำให้ชีวิต Programmer ง่ายขึ้น ทั้ง Automate, Library ชอบทำ Blog และ Video ถ้ามีเวลานะ!

ขอบคุณทุกคนที่ติดตาม และอ่านบทความของผมครับ ผมหวังว่าความรู้ที่เขียนขึ้นในเว็บไซต์นี้จะช่วยทุกท่านได้ไม่มากก็น้อย 

Scroll to Top