PHP 8.4 ได้เปิดตัวอย่างเป็นทางการแล้ว (General Availability เมื่อประมาณ 21 พฤศจิกายน 2024) โดยมาพร้อมกับฟีเจอร์ใหม่ๆ ที่น่าสนใจและการปรับปรุงประสิทธิภาพที่นักพัฒนา PHP ทุกคนควรรู้จัก มาดูกันว่ามีอะไรใหม่บ้างที่สำคัญๆ ครับ
ฟีเจอร์เด่นใน PHP 8.4
- Property Hooks: ฟีเจอร์นี้จะช่วยให้เราสามารถกำหนด logic เพิ่มเติมเมื่อมีการเข้าถึง (get) หรือตั้งค่า (set) property ของ object ได้โดยตรง ทำให้โค้ดของเราจัดการได้ง่ายขึ้นและลดการเขียน getter/setter แบบเดิมๆ ตัวอย่าง:
PHP
class User {
public string $name {
get => strtoupper($this->name); // อ่านค่า name จะได้เป็นตัวพิมพ์ใหญ่เสมอ
set => $this->name = trim($value); // ก่อน set ค่า name จะทำการ trim ช่องว่างก่อน
}
}- Asymmetric Visibility for Properties: กำหนดระดับการเข้าถึง (visibility) สำหรับการอ่าน (get) และการเขียน (set) property แยกกันได้ เช่น public สำหรับการอ่าน แต่ private สำหรับการเขียน ตัวอย่าง:
PHP
class Product {
public private(set) float $price; // อ่านได้จากภายนอก แต่แก้ไขได้เฉพาะภายในคลาสเท่านั้น
public function __construct(float $initialPrice) {
$this->price = $initialPrice;
}
}- New Array Functions: เพิ่มฟังก์ชันใหม่ๆ สำหรับจัดการ Array ให้สะดวกยิ่งขึ้น เช่น:
array_find(): ค้นหาค่าแรกใน array ที่ตรงตามเงื่อนไขarray_find_key(): ค้นหา key แรกใน array ที่ค่าของมันตรงตามเงื่อนไขarray_any(): ตรวจสอบว่ามีสมาชิกอย่างน้อยหนึ่งตัวใน array ตรงตามเงื่อนไขหรือไม่array_all(): ตรวจสอบว่าสมาชิกทุกตัวใน array ตรงตามเงื่อนไขหรือไม่
- Simplified Object Instantiation: สามารถเรียก method หรือเข้าถึง property ของ object ที่สร้างใหม่ได้ทันทีโดยไม่ต้องใส่วงเล็บครอบ
new ClassName()อีกต่อไป ทำให้โค้ดดูสะอาดตาขึ้น ตัวอย่าง:
PHP
// PHP 8.3 และเก่ากว่า
$user = (new User())->getName();
// PHP 8.4
$user = new User()->getName();- Lazy Objects: รองรับการสร้าง Proxy Objects หรือ Lazy Objects ได้ในตัว ซึ่งเป็น pattern ที่ใช้บ่อยใน Framework ต่างๆ เพื่อเพิ่มประสิทธิภาพโดยการโหลด object เมื่อจำเป็นเท่านั้น
- HTML5 Support in DOM Extension:
DOMDocumentได้รับการปรับปรุงให้รองรับการ parse HTML5 ได้อย่างถูกต้องมากขึ้นผ่านคลาสใหม่\Dom\HTMLDocument
#[Deprecated]Attribute: สามารถใช้ Attribute#[Deprecated]เพื่อระบุว่า class, method, function, property หรือ constant นั้นๆ ถูก deprecated แล้ว ซึ่งจะช่วยให้ IDE และเครื่องมือวิเคราะห์โค้ดแจ้งเตือนนักพัฒนาได้
- New
mb_trim(),mb_ltrim(),mb_rtrim()Functions: เพิ่มฟังก์ชันสำหรับ trim multi-byte strings ซึ่งเป็นประโยชน์มากสำหรับการทำงานกับภาษาที่มีตัวอักษรพิเศษ เช่น ภาษาไทย
การเปลี่ยนแปลงและ Deprecations อื่นๆ ที่น่าสนใจ
- Implicitly nullable parameter declarations deprecated: การประกาศ parameter ที่สามารถเป็น null ได้โดยปริยาย (ไม่ได้ระบุ
?หน้า type) จะถูก deprecated เพื่อให้โค้ดมีความชัดเจนมากขึ้น - Pspell และ IMAP extensions moved to PECL: extension เหล่านี้จะไม่ได้รวมอยู่ใน PHP core อีกต่อไป หากต้องการใช้งานจะต้องติดตั้งผ่าน PECL
- Password Hashing: ค่า cost เริ่มต้นของ Bcrypt เปลี่ยนจาก 10 เป็น 12 เพื่อความปลอดภัยที่สูงขึ้น
ทำไมควรอัปเดตเป็น PHP 8.4?
การอัปเดตเป็น PHP เวอร์ชันล่าสุดอยู่เสมอจะช่วยให้คุณ:
- เข้าถึงฟีเจอร์ใหม่ๆ ที่ช่วยให้การเขียนโค้ดง่ายขึ้น สะดวกขึ้น และมีประสิทธิภาพมากขึ้น
- ได้รับประโยชน์จากการปรับปรุงประสิทธิภาพ ที่มาพร้อมกับแต่ละเวอร์ชัน
- มั่นใจในความปลอดภัย เนื่องจากเวอร์ชันใหม่ๆ จะมีการแก้ไขช่องโหว่ที่พบในเวอร์ชันเก่า
- ได้รับการสนับสนุน (Active Support / Security Support) จากทีมพัฒนา PHP ต่อไป
สำหรับนักพัฒนา PHP แนะนำให้เริ่มศึกษาและทดสอบโค้ดของคุณกับ PHP 8.4 เพื่อเตรียมความพร้อมในการนำไปใช้งานจริง และใช้ประโยชน์จากฟีเจอร์ใหม่ๆ ที่จะช่วยยกระดับการพัฒนาแอปพลิเคชันของคุณให้ดียิ่งขึ้นครับ!

