การทดสอบเบต้าของ PHP 8 ได้เริ่มขึ้นแล้ว

แนะนำ รุ่นเบต้าแรกของสาขาใหม่ของภาษาการเขียนโปรแกรม PHP 8 มีกำหนดการเปิดตัวในวันที่ 26 พฤศจิกายน ในเวลาเดียวกัน การเปิดตัวแก้ไขของ PHP 7.4.9, 7.3.21 และ
7.2.33 ซึ่งกำจัดข้อผิดพลาดและช่องโหว่ที่สะสมไว้

หลัก นวัตกรรม PHP 8:

  • เพิ่มพลัง คอมไพเลอร์ JITซึ่งการใช้จะช่วยเพิ่มผลผลิต
  • สนับสนุน อาร์กิวเมนต์ของฟังก์ชันที่มีชื่อช่วยให้คุณสามารถส่งผ่านค่าไปยังฟังก์ชันที่เกี่ยวข้องกับชื่อได้เช่น คุณสามารถส่งผ่านอาร์กิวเมนต์ในลำดับใดก็ได้และกำหนดอาร์กิวเมนต์เพิ่มเติมได้ ตัวอย่างเช่น "array_fill(start_index: 0, num: 100, value: 50)"
  • เมื่อเรียกวิธีการ ได้รับอนุญาต การใช้ตัวดำเนินการ “?” ซึ่งช่วยให้คุณสามารถเริ่มต้นการโทรได้เฉพาะในกรณีที่มีวิธีอยู่ ซึ่งจะช่วยหลีกเลี่ยงการตรวจสอบที่ไม่จำเป็นในการส่งคืนค่า “null” ตัวอย่างเช่น "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • สนับสนุน ประเภทสหภาพแรงงานกำหนดคอลเลกชันตั้งแต่สองประเภทขึ้นไป (เช่น “ฟังก์ชั่นสาธารณะ foo(Foo|Bar $input): int|float;”)
  • สนับสนุน คุณลักษณะ (คำอธิบายประกอบ) ที่อนุญาตให้คุณผูกข้อมูลเมตา (เช่นข้อมูลประเภท) เข้ากับคลาสโดยไม่ต้องใช้ไวยากรณ์ Docblock
  • การสนับสนุนการแสดงออก การจับคู่ซึ่งแตกต่างจากสวิตช์ตรงที่สามารถส่งคืนค่า รองรับเงื่อนไขการรวม ใช้การเปรียบเทียบประเภทที่เข้มงวด และไม่จำเป็นต้องมีข้อกำหนด "หยุด"

    $result = ตรงกัน($อินพุต) {
    0 => "สวัสดี",
    '1', '2', '3' => “โลก”,
    };

  • ไวยากรณ์ที่สั้นลง คำจำกัดความของคลาส ช่วยให้คุณสามารถรวมคำจำกัดความของตัวสร้างและคุณสมบัติได้
  • ประเภทการคืนสินค้าใหม่ - คงที่.
  • ประเภทใหม่ - ผสมซึ่งสามารถใช้เพื่อกำหนดว่าฟังก์ชันยอมรับพารามิเตอร์ประเภทต่างๆ หรือไม่
  • การแสดงออก โยน เพื่อจัดการกับข้อยกเว้น
  • แผนที่อ่อนแอ เพื่อสร้างวัตถุที่สามารถเสียสละได้ในระหว่างการรวบรวมขยะ (เช่น เพื่อจัดเก็บแคชที่ไม่จำเป็น)
  • โอกาส ใช้นิพจน์ “::class” สำหรับวัตถุ (คล้ายกับการเรียก get_class())
  • โอกาส คำจำกัดความใน catch block ของข้อยกเว้นที่ไม่ได้ผูกไว้กับตัวแปร
  • โอกาส ทิ้งเครื่องหมายจุลภาคไว้หลังองค์ประกอบสุดท้ายในรายการพารามิเตอร์ฟังก์ชัน
  • อินเทอร์เฟซใหม่ สตริงได้ เพื่อระบุประเภทสตริงหรือข้อมูลใด ๆ ที่สามารถแปลงเป็นสตริงได้ (ซึ่งมีเมธอด __toString())
  • ลูกเล่นใหม่ str_มี()ซึ่งเป็นอะนาล็อกแบบง่ายของ strpos สำหรับระบุการเกิดขึ้นของสตริงย่อย เช่นเดียวกับฟังก์ชัน str_starts_with() และ str_ends_with() สำหรับตรวจสอบการจับคู่ที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง
  • เพิ่มคุณสมบัติแล้ว fdiv()ซึ่งดำเนินการหารโดยไม่มีข้อผิดพลาดเมื่อหารด้วยศูนย์
  • เปลี่ยน ตรรกะการเข้าร่วมสตริง ตัวอย่างเช่น นิพจน์ 'echo "sum:" $a + $b' ก่อนหน้านี้ถูกตีความว่าเป็น 'echo ("sum: " . $a) + $b' และใน PHP 8 จะถือว่าเป็น 'echo "sum: " ($a + $b)'.
  • กระชับขึ้น การตรวจสอบการดำเนินการทางคณิตศาสตร์และบิต เช่น นิพจน์ "[] % [42]" และ "$object + 4" จะส่งผลให้เกิดข้อผิดพลาด
  • ดำเนินการแล้ว อัลกอริธึมการเรียงลำดับที่เสถียรซึ่งรักษาลำดับของค่าที่เหมือนกันในการรันที่แตกต่างกัน
  • ที่มา: opennet.ru

เพิ่มความคิดเห็น