- รวม property hooks, asymmetric visibility, DOM API ที่อัปเดตแล้ว, การปรับปรุงประสิทธิภาพ, การแก้บั๊ก และการปรับปรุงทั่วไป
- มี property hooks สำหรับรองรับ computed properties ที่ IDE และเครื่องมือ static analysis สามารถเข้าใจได้โดยตรง
- เพิ่ม asymmetric visibility ที่ทำให้ควบคุมขอบเขตการอ่านและการเขียนของพร็อพเพอร์ตีได้อย่างอิสระ
- ฟีเจอร์ใหม่
- สามารถใช้กลไก deprecation ที่มีอยู่ของ PHP กับฟังก์ชัน เมธอด และคลาสคอนสแตนต์ที่ผู้ใช้กำหนดเองได้ผ่านแอตทริบิวต์
#[\\Deprecated]
- DOM API ใหม่รองรับการปฏิบัติตามมาตรฐานสำหรับการพาร์เซเอกสาร HTML5 และแก้ไขบั๊กความเข้ากันได้เก่าหลายจุดของ DOM
- ใช้อ็อบเจ็กต์
BcMath\\Number เพื่อจัดการตัวเลขความแม่นยำตามต้องการในรูปแบบเชิงวัตถุได้
- มีฟังก์ชันอาร์เรย์ใหม่ เช่น
array_find(), array_find_key(), array_any(), array_all()
- มีซับคลาสใหม่ของ PDO ได้แก่ Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite
- เข้าถึงพร็อพเพอร์ตีและเมธอดของอ็อบเจ็กต์ที่เพิ่งสร้างใหม่ได้โดยไม่ต้องใส่วงเล็บ
- คลาส อินเทอร์เฟซ และฟังก์ชันใหม่
- มี Lazy Objects ใหม่ และการใช้งาน JIT ที่อิงกับ IR Framework
- เพิ่มฟังก์ชัน
request_parse_body(), bcceil(), bcdivmod(), bcfloor(), bcround()
- เพิ่มเมธอด เช่น
DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond()
- เพิ่มฟังก์ชัน
mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst()
- เพิ่มฟังก์ชัน
pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid()
- เพิ่มเมธอด
ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), ReflectionProperty::isDynamic()
- เพิ่มฟังก์ชัน
http_get_last_response_headers(), http_clear_last_response_headers(), fpow()
- เพิ่มเมธอด
XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), XMLWriter::toMemory()
- เพิ่มฟังก์ชัน
grapheme_str_split()
- การเลิกใช้และความเข้ากันไม่ได้แบบ breaking change
- ส่วนขยาย IMAP, OCI8, PDO_OCI, pspell ถูกถอดออกจาก bundle และย้ายไปที่ PECL
- เลิกใช้พารามิเตอร์ชนิด nullable แบบ implicit
- เลิกใช้การใช้ _ เป็นชื่อคลาส
- เลิกใช้การยก 0 เป็นกำลังลบ
- หากส่งโหมดที่ไม่ถูกต้องให้
round() จะเกิด ValueError
- ตอนนี้คลาสคอนสแตนต์ของส่วนขยายมีการกำหนด type แล้ว
- ตอนนี้คลาส GMP ถูกกำหนดเป็น final
- คอนสแตนต์และฟังก์ชันที่เกี่ยวข้องกับ MYSQLI ถูกเลิกใช้
- ตอนนี้
stream_bucket_make_writeable() และ stream_bucket_new() จะคืนค่าเป็นอินสแตนซ์ของ StreamBucket
- มีการเปลี่ยนพฤติกรรมของ
exit()
- คอนสแตนต์ E_STRICT ถูกเลิกใช้
- การปรับปรุงประสิทธิภาพและไวยากรณ์
- ปรับปรุงประสิทธิภาพ ไวยากรณ์ และความปลอดภัยของชนิดข้อมูล
- แนะนำให้อัปเกรดเป็น PHP 8.4
3 ความคิดเห็น
เป็นภาษาที่อย่างน้อยก็คงไม่ถึงกับอดตาย เพราะมี WordPress และ Laravel
เป็นภาษาที่ต่อให้ WordPress กับ Laravel ล่มสลายไป ก็ยังไม่ถึงกับอดตายครับ
ความคิดเห็นจาก Hacker News
มีการระบุไว้ใน RFC ว่าทำไม `$this->countryCode`` ถึงไม่ก่อให้เกิดการเรียกซ้ำไม่สิ้นสุด รู้สึกราวกับเป็นเวทมนตร์ที่การเข้าถึงพร็อพเพอร์ตีของ PHP สามารถมีความหมายต่างกันได้ตามบริบท
ในฐานะโปรแกรมเมอร์ PHP รู้สึกกังวลกับทิศทางของ PHP ฟีเจอร์ภาษาใหม่ ๆ เพิ่มความซับซ้อนของภาษาเพื่อประโยชน์ที่น่าสงสัย
รู้สึกดีใจที่ PHP ยังคงเติบโตได้ดี ในปี 2021 เคยกังวลจากการจากไปของ Nikita Popov แต่ PHP ก็ยังเป็นภาษาที่ดีและยังมีนักพัฒนาจำนวนมากทำงานอยู่
ตื่นเต้นกับ property hooks มากที่สุด เป็นฟีเจอร์ที่คิดถึงจาก C#
__get()และ__set()แต่แนวทางนี้หนักเกินไปและต้องใช้คอมเมนต์ PHPDoc จำนวนมากกำลังดูการโอเวอร์โหลดตัวเข้าถึงอาร์เรย์แล้วไปเจอ "Property Hooks" รู้แล้วตกใจว่าเป็นฟีเจอร์ที่เพิ่งเพิ่มมาไม่นานนี้
พอใจกับรีลีสใหม่ของ PHP มีการปรับปรุงหลายอย่าง เช่น stack trace ของ closure ที่ดีขึ้น การปรับปรุงประสิทธิภาพ การรองรับ HTML5 และ lazy objects
ตื่นเต้นกับอ็อบเจ็กต์ bcmath ชอบที่ตอนนี้สามารถตรวจสอบชนิดข้อมูลได้โดยไม่ต้องใช้คลาส wrapper มากกว่าจะสนใจตัวดำเนินการเลขคณิต
ดีใจที่ PHP ยังคงพัฒนาต่อไป ทำให้นึกถึงความทรงจำตอนเริ่มต้นเป็นฟรีแลนซ์
ฟังก์ชันใหม่
array_findของ PHP แสดงให้เห็นปัญหาในการออกแบบภาษา แม้จะคล้ายกับarray_searchที่มีอยู่เดิม แต่อาร์กิวเมนต์กลับเรียงคนละลำดับไม่เข้าใจ
public private(set)รู้สึกว่าreadonly publicน่าจะเหมาะสมกว่าprivate(set)ของ Swift