PHP 8.0 มาแล้ว!!!

 บทความนี้จะเขียนเฉพาะหัวข้อที่ส่วนตัวคิดว่าเป็นสิ่งที่น่าสนใจสำหรับ PHP 8.0 จะไม่ครอบคลุมทั้งหมด แต่จะทิ้งลิงก์สำหรับข้อมูลตัวเต็มไว้ให้ท้ายบทความครับ

Named arguments (ใช้ชื่อ argument ในการส่งค่าได้)


ในตัวอย่างนี้ดูแล้วอาจจะงงสักหน่อย ต้องมาดูที่ว่า function นี้ถูกประกาศยังไง
ใน feature นี้อธิบายง่าย ๆ คือเราสามารถ "เลือก" ที่จะส่ง argument ยังไงก็ได้หากมีการกำหนดชื่อของ argument ที่ส่ง ไม่จำเป็นต้องลำดับ argument ด้วย
ในตัวอย่างของ PHP 8 จะเห็นว่าเขาเลือกส่ง $string (อันนี้ไม่ได้ใช้ Named argument ส่งแบบปกติ) และ double_encode (อันนี้มีการใช้ละ คือเลือกส่งเฉพาะ double_encode เป็น false) ส่วนตัวแปรที่เหลือปล่อยให้เป็นค่า default ไปตามใน doc ครับ

Constructor property promotion (ประกาศ property ผ่าน constructor)



feature นี้ตรงไปตรงมาตามภาพคือไม่จำเป็นต้องประกาศ property ด้านบนของ class แล้ว ประกาศผ่าน argument ของ constructor รวมถึง assign ค่าไปในตัวให้ด้วยเลยเมื่อส่งค่าเข้ามา

Match expression


ครั้งหนึ่งในชีวิต PHP programmer น่าจะมีคิดกันบ้างว่าทำไมต้องมาพิมพ์ break; หลาย ๆ บรรทัดด้วยวะ ซึ่งก็มี feature นี้เข้ามาช่วยแล้ว การใช้งานก็ตรงไปตรงมาเช่นเคย แต่จะใช้ได้เฉพาะกับการ assign ค่าหรือ return ค่าเท่านั้น ใช้กับ switch statement ที่มีหลายบรรทัดไม่ได้

Nullsafe operator


เห็นครั้งแรกคืออุทานว่า "HOLY SHIT!" กันเลยทีเดียว หมดสิ้นกันทีกับการ if เช็คค่าว่า null มั้ยก่อนจะทำอะไรต่อไป ใช้ ? เช็คในบรรทัดได้เลยว่าถ้า != null ค่อย chain ต่อ

Consistent type errors for internal functions (ปา error ใส่หน้าเมื่อมีข้อผิดพลาดในการใช้งาน built-in function)


จากเดิมเวลาเราทำอะไรสักอย่างผิดกับพวก built-in function จะมีแค่ข้อความโง่ ๆ แจ้งเตือนออกมาเป็น error ให้เห็น แต่ใน PHP 8 คือการ throw exception ออกมาเลย เราสามารถจัดการด้วย try / catch ได้ ซึ่งทำให้เราจัดการกับ input จาก user ที่ต้องผ่าน function พวกนี้ได้ง่ายขึ้น

Allow trailing comma in parameter list (ใส่ , ทิ้งไว้ที่ parameter ตัวสุดท้ายของ function ได้)

ในส่วนนี้จะเหมือน array คือตัวสุดท้ายสามารถทิ้ง , ไว้ได้โดยไม่ error

สรุป

จริง ๆ ยังมีอีกมาก แต่ผมหยิบมาเฉพาะที่เขาประกาศอยู่หน้าเว็บและดูน่าสนใจสำหรับตัวผมเท่านั้น สามารถไปอ่านประกาศตัวเต็มได้ที่ https://www.php.net/releases/8.0/en.php

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

[Blue Archive] รวมล็อบบี้ความทรงจำ (Live2D)

[Blue Archive] รีวิวมารินะ (Marina)

[Blue Archive] รีวิวชินัตสึ (Chinatsu)

[Blue Archive] รีวิวโฮชิโนะ (Hoshino)

[Blue Archive] รีวิวจุนโกะ (Junko)