5 คะแนน โดย GN⁺ 2024-11-22 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • รวม 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 ความคิดเห็น

 
carnoxen 2024-11-23

เป็นภาษาที่อย่างน้อยก็คงไม่ถึงกับอดตาย เพราะมี WordPress และ Laravel

 
budaestew 2024-11-23

เป็นภาษาที่ต่อให้ WordPress กับ Laravel ล่มสลายไป ก็ยังไม่ถึงกับอดตายครับ

 
GN⁺ 2024-11-22
ความคิดเห็นจาก Hacker News
  • มีการระบุไว้ใน RFC ว่าทำไม `$this->countryCode`` ถึงไม่ก่อให้เกิดการเรียกซ้ำไม่สิ้นสุด รู้สึกราวกับเป็นเวทมนตร์ที่การเข้าถึงพร็อพเพอร์ตีของ PHP สามารถมีความหมายต่างกันได้ตามบริบท

    • มีเวทมนตร์ของภาษาที่ทำให้การเข้าถึงพร็อพเพอร์ตีถูกแปลงเป็นการเรียกเมธอด
    • แม้จะไม่ใช่ผู้ใช้ PHP แต่ก็กังวลว่าความซับซ้อนแบบนี้ถูกเพิ่มเข้ามาในภาษา
  • ในฐานะโปรแกรมเมอร์ PHP รู้สึกกังวลกับทิศทางของ PHP ฟีเจอร์ภาษาใหม่ ๆ เพิ่มความซับซ้อนของภาษาเพื่อประโยชน์ที่น่าสงสัย

    • Property hooks หมายความว่าการเข้าถึงพร็อพเพอร์ตีถูกแปลงเป็นการเรียกเมธอด
    • เคยใช้ฟีเจอร์คล้ายกันนี้ใน JS และ Perl แต่เมธอดแบบระบุชัดเจนเข้าใจง่ายกว่าและขยายต่อได้ง่ายกว่า
  • รู้สึกดีใจที่ PHP ยังคงเติบโตได้ดี ในปี 2021 เคยกังวลจากการจากไปของ Nikita Popov แต่ PHP ก็ยังเป็นภาษาที่ดีและยังมีนักพัฒนาจำนวนมากทำงานอยู่

  • ตื่นเต้นกับ property hooks มากที่สุด เป็นฟีเจอร์ที่คิดถึงจาก C#

    • เคยพยายามเลียนแบบด้วย __get() และ __set() แต่แนวทางนี้หนักเกินไปและต้องใช้คอมเมนต์ PHPDoc จำนวนมาก
  • กำลังดูการโอเวอร์โหลดตัวเข้าถึงอาร์เรย์แล้วไปเจอ "Property Hooks" รู้แล้วตกใจว่าเป็นฟีเจอร์ที่เพิ่งเพิ่มมาไม่นานนี้

    • รู้สึกยินดีที่ความสามารถในการแสดงออกและ syntactic sugar จากภาษาอื่น ๆ ถูกนำเข้ามาใน PHP
  • พอใจกับรีลีสใหม่ของ PHP มีการปรับปรุงหลายอย่าง เช่น stack trace ของ closure ที่ดีขึ้น การปรับปรุงประสิทธิภาพ การรองรับ HTML5 และ lazy objects

  • ตื่นเต้นกับอ็อบเจ็กต์ bcmath ชอบที่ตอนนี้สามารถตรวจสอบชนิดข้อมูลได้โดยไม่ต้องใช้คลาส wrapper มากกว่าจะสนใจตัวดำเนินการเลขคณิต

  • ดีใจที่ PHP ยังคงพัฒนาต่อไป ทำให้นึกถึงความทรงจำตอนเริ่มต้นเป็นฟรีแลนซ์

  • ฟังก์ชันใหม่ array_find ของ PHP แสดงให้เห็นปัญหาในการออกแบบภาษา แม้จะคล้ายกับ array_search ที่มีอยู่เดิม แต่อาร์กิวเมนต์กลับเรียงคนละลำดับ

    • มันถูกเพิ่มเข้ามาใน PHP เพราะภาษาอื่นมีฟังก์ชันแบบนี้ แต่ภาษาส่วนใหญ่ไม่ได้ทำให้มันเป็นฟังก์ชัน global
  • ไม่เข้าใจ public private(set) รู้สึกว่า readonly public น่าจะเหมาะสมกว่า

    • ดูคล้ายกับ private(set) ของ Swift