Laravel 5.8 ออกแล้ว !! มีอะไรใหม่ ?

what is new in laravel 5.8

พึ่งใช้ Laravel 5.7 ไม่ทันไรก็เปิดตัว Laravel 5.8 แล้วเรียกว่าเร็วพอๆกับ the flash เลยทีเดียวเรามาดูกันดีกว่าว่ามีอะไรอัพเดทใน 5.8 บ้าง

PHP dotenv

เปิดมาตัวแรกก็ร้องโอโห เป็น library สำหรับอ่านไฟล์ .env ของเรานั้นเองให้มีประสิทธิภาพ และทำอะไรได้เยอะขึ้นถูกใจสำหรับสาย Develop เว็บใหญ่ๆที่มีหลาย state ให้ทดสอบซึ่งใน laravel 5.8 จะติด PHP dotenv version 3.0 มาด้วย มาดูฟีเจอร์คร่าวๆกัน

BASE_DIR="/var/webroot/project-root"
CACHE_DIR="${BASE_DIR}/cache"
TMP_DIR="${BASE_DIR}/tmp"

สามารถทำ Nesting Variables ใครที่ชอบแบ่ง env เป็นตัวแปรแล้วเอามาต่อกันคงชอบไม่น้อย ถ้าใครอยากรู้จัก lib ตัวนี้ให้มากขึ้นตาม repo ไปเลยจ้า PHP dotenv version 3.0

Carbon v2

ตัวจัดการเวลาที่คนใช้ Laravel ต้องรู้จักเป็นอย่างดีถูก pack มากับ Laravel สามารถเลือกใช้ V1 หรือ V2 ก็ได้ แต่ V2 มีการพัฒนาอัพเกรดให้เป็นสากลมากยิ่งขึ้น

Cache TTL Changes

อัพเกรดระบบ Cache ให้เขียนเป็นสากลยิ่งขึ้นในการกำหนดเวลาการ cache เช่น

Cache::remember('active-posts', 5, function () {
    return Post::active()->get();
});

เปลี่ยนเป็นแบบนี้

Cache::remember('active-posts', now()->addMinutes(5), function () {
    return Post::active()->get();
});

อ่านง่ายขึ้นตรงเลข 5 ไม่ใช่อยู่ดีๆเลข 5 ก็ลอยมาอาจจะทำให้คนเขียนต่องงได้ เปลี่ยน convention ให้มนุษย์เข้าใจง่ายขึ้น

Deprecated String and Array Helpers

อันนี้หลายคนอาจจะน้ำตาตกถ้าเกิด Application ของเราดันใช้ Array and String helpers เยอะเพราะใน 5.8 เค้าจะเอา function บางตัวออก ยกตัวอย่างเช่น

// Deprecated เอาออก
array_add($array, $key, $value);

// Use this directly เปลี่ยนมาเป็นแบบนี้
Arr::add($array, $key, $value);

Deprecated ซะโหดร้าย แต่ไม่ต้องตกใจไปเมื่อ Taylor Otwell บอกว่าเดี๋ยวมีแผนจะแยกเป็น package ให้ใครอยากใช้อันเดิมก็ติดตั้งเพิ่ม แต่ก็ไม่รู้เมื่อไหร่เผื่อใจไว้บ้างก็ดีนะ ฮ่าๆ

Automatic Policy Resolution

ตั้งแต่ version 5.5 เราก็ไม่ต้อง Register class library ต่างๆแล้วเพราะมี package discover แค่สั่ง composer install ตัว Laravel ก็เจอ package เลยไม่ต้องนั่ง Register กันให้เมื่อยเหมือนเมื่อก่อน

และใน version 5.8 นี้เองก็เพิ่มระบบ Register policy แบบ automatic มาด้วย แต่ถ้าเราไปสร้างไว้แปลกจากที่ laravel กำหนดก็ยังต้อง Register อยู่ดีครับ

Nexmo / Slack Notification Channels

ใครที่ใช้ Package 2 ตัวนี้ต้องทำการติดตั้ง package ใหม่เนื่องจาก เค้าแยกทั้งสองตัวนี้ออกเป็นคนละ lib กันใครที่ใช้ slack ก็ไปกดลง package แยกใหม่ตามนี้เลยครับ

Nexmo Notification Channels

Slack Notification Channels

Blade Template File Path

ปกติเวลา Laravel สร้าง cache file เช่น profile.blade.php จะถูกสร้างเป็น cache และตั้งชื่อด้วย hash หรืออะไรผมก็ไม่แน่ใจแต่จะได้ประมานนี้ 354aw3fawf846a8w4aw864awf.php ทำให้เวลาตรวจสอบเราก็ไม่รู้ว่าเอ้ย ไฟล์จริงๆของมันชื่ออะไร ก็เลยมี  Olga Strizhenko (@bzixilu) of JetBrains มา contribute ช่วยจนได้ชื่อไฟล์จริงๆบนหัวไฟล์แบบรูปนี้ ที่เป็นตัวหนังสือสีเทาๆด้านบน ช่วยให้ไล่ไฟล์ได้ง่ายขึ้น

Markdown File Directory Change

เปลี่ยน folder Markdown mail components จาก

/resources/views/vendor/mail/markdown
เป็น
/resources/views/vendor/mail/text

ใครที่ใช้ mail แบบ markdown อยู่อย่าลืมเปลี่ยน folder ตอนอัพเดทด้วยนะครับ

จบแล้วสำหรับ Review การอัพเดท Laravel 5.8 สำหรับใครที่กำลังขึ้น project แนะนำว่า 5.8 ไปเลยครับส่วนการอัพเกรดจาก 5.7 ไป 5.8 สามารถทำตามไกด์นี้ได้เลยครับ

แนะนำว่ารีบอัพเดทก่อนจะสายไป ถ้าใครที่อยู่เวอร์ชั่น 5.2 คงจะอัพเดทกันจนปวดหัวแน่นอน

ติดตั้ง Application Laravel ผ่าน git ง่ายนิดเดียวด้วย Cloudway Server สำหรับ PHP
สมัคร Cloudways คลิก!!