ค้นหาเว็บไซต์

PHP 8.5 แนะนำส่วนขยาย URI ตัวดำเนินการท่อ และการปรับปรุงด้านไวยากรณ์


PHP 8.5 แนะนำส่วนขยาย URI ใหม่ ตัวดำเนินการ pipe และการปรับปรุงไวยากรณ์หลัก ช่วยให้ประสิทธิภาพเร็วขึ้นและโค้ดสะอาดขึ้น

PHP ภาษาโปรแกรมฝั่งเซิร์ฟเวอร์ที่ใช้หลัก ๆ ในการสร้างเว็บไซต์และแอปพลิเคชันเว็บแบบไดนามิก เพิ่งปล่อยเวอร์ชัน 8.5 ซึ่งเป็นอัปเดตครั้งสำคัญที่เพิ่มไวยากรณ์ใหม่ รองรับแอตทริบิวต์ที่กว้างขึ้น ปรับปรุงประสิทธิภาพ และมีฟีเจอร์ใหม่ตาม RFC หลายรายการ

หนึ่งในฟีเจอร์สำคัญที่เพิ่มเข้ามาคือการขยาย URI แบบ built-in ใหม่ ซึ่งให้ API ที่สอดคล้องกันสำหรับการวิเคราะห์และแก้ไข URL ตามมาตรฐาน RFC 3986 และมาตรฐาน URL ของ WHATWG โดยมีการสนับสนุนจาก uriparser และ Lexbor มันมาแทนที่ parse_url() ในกรณีที่ต้องการการจัดการที่ถูกต้องตามมาตรฐาน

อีกหนึ่งไฮไลท์สำคัญของเวอร์ชันนี้คือการแนะนำตัวดำเนินการ pipe (|>), ซึ่งช่วยให้การเชื่อมต่อฟังก์ชันจากซ้ายไปขวาเป็นไปได้ ซึ่งจะช่วยลดการเรียกฟังก์ชันที่ซ้อนลึก ทำให้ pipeline การแปลงข้อมูลอ่านและดูแลรักษาได้ง่ายขึ้น ค่าต่างๆ จะถูกส่งตรงผ่าน callables รวมถึง arrow functions และ partial applications เช่น trim(...)

PHP 8.5 ยังปรับปรุงการจัดการวัตถุด้วยไวยากรณ์ clone-with ตอนนี้นักพัฒนาสามารถอัปเดตคุณสมบัติบางอย่างได้ขณะโคลนอ็อบเจ็กต์ผ่าน clone($obj, ['prop' => value]) ทำให้รูปแบบ “with-er” ง่ายขึ้นและสามารถใช้ในคลาสอ่านอย่างเดียวโดยไม่ต้องมีโค้ดซ้ำซ้อน

อีกหนึ่งฟีเจอร์ที่เพิ่มเข้ามาคือแอตทริบิวต์ #[\NoDiscard] ซึ่งจะแจ้งเตือนเมื่อมีการละเว้นค่าที่ฟังก์ชันส่งคืนโดยไม่ได้ตั้งใจ ซึ่งช่วยให้จับข้อผิดพลาดใน API ที่ต้องใช้ค่าที่ส่งคืนเพื่อให้ทำงานถูกต้อง โดยสามารถใช้ (void) เมื่อผู้พัฒนาต้องการละเว้นค่าอย่างชัดเจน

ภาษานี้ยังขยายการรองรับสำหรับนิพจน์ในเวลาคอมไพล์ ฟังก์ชันปิดแบบคงที่และ callable ระดับแรกตอนนี้สามารถใช้ในนิพจน์คงที่ได้ ทำให้สามารถใช้งานในอาร์กิวเมนต์ของแอตทริบิวต์ ค่าพื้นฐานของสมบัติ และค่าคงที่ของคลาสได้

การปรับปรุงที่เกี่ยวข้องกับประสิทธิภาพรวมถึงตัวจัดการ cURL แบบแชร์ที่คงอยู่ ด้วย curl_share_init_persistent() ตัวจัดการแบบแชร์สามารถอยู่ข้ามหลายคำขอและนำข้อมูลการเชื่อมต่อที่เคยเริ่มต้นแล้วมาใช้ใหม่ ช่วยลดภาระในการทำงานเครือข่ายซ้ำสำหรับแอปพลิเคชันที่ทำงานระยะยาว

ฟังก์ชันช่วยเหลือใหม่สองฟังก์ชัน, array_first() และ array_last(), ช่วยให้การจัดการกรณีทั่วไปชัดเจนขึ้น ทั้งสองฟังก์ชันจะส่งค่า null เมื่ออาร์เรย์ว่าง ซึ่งช่วยให้การประสานงานกับตัวดำเนินการรวมค่า null ง่ายขึ้นและไม่จำเป็นต้องตรวจสอบคีย์ด้วยตนเอง

การเปลี่ยนแปลงเพิ่มเติมครอบคลุมฟีเจอร์ของภาษาหลากหลายประเภท ขณะนี้ข้อผิดพลาดร้ายแรงรวมถึงการติดตามย้อนกลับ คุณสมบัติสามารถกำหนดเป้าหมายไปยังค่าคงที่ และคุณสมบัติแบบสแตติกรองรับการมองเห็นแบบไม่สมมาตรได้

คุณสมบัติสามารถถูกกำหนดเป็น final ผ่านการเลื่อนคุณสมบัติของตัวสร้าง นอกจากนี้ PHP ยังเพิ่มวิธีการใหม่ของ DOM เช่น getElementsByClassName() และ insertAdjacentHTML() พร้อมกับฟังก์ชันยูทิลิตี้ใหม่ ๆ เช่น grapheme_levenshtein().

สุดท้าย การเลิกใช้งานใน PHP 8.5 รวมถึงการลบชื่อการแปลงแบบไม่เป็นมาตรฐาน การเลิกใช้อักขระแบ็กทิก (`) เป็นทางเลือกของ shell_exec() การแจ้งเตือนสำหรับการแปลง float เป็น int ที่ไม่ถูกต้อง และการจำกัดการใช้ null เป็นออฟเซ็ตของอาร์เรย์ วิธีการ serialization เก่า __sleep() และ __wakeup() ถูกเลิกใช้งานแบบอ่อนในปัจจุบันเพื่อสนับสนุน __serialize() และ __unserialize()

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงทั้งหมดใน PHP 8.5 โปรดดูประกาศการวางจำหน่ายอย่างเป็นทางการหรือไปที่หน้านี้