PHP Version 8 มีอะไรใหม่น่าสนใจ?

หน้าแรกArticlesTechnology NewsPHP Version 8 มีอะไรใหม่น่าสนใจ?

PHP Version 8.0 เปิดตัวอย่างเป็นทางการเมื่อวันที่ 20 พฤษภาคม 2563 ที่ผ่านมา  เป็นดั่งยุคใหม่ของ PHP 

การอัปเดตฟีเจอร์ใหม่ที่สำคัญที่สุดใน PHP 8

The JIT compiler
Attributes
Named arguments
Match expressions
Throw expressions
Union type
Mixed types

The JIT compiler

คอมไพเลอร์ javac แปลงซอร์สโค้ด Java เป็น bytecode Java Virtual Machine (JVM) สามารถรัน bytecode นี้ได้ มันแปลง bytecode เป็นรหัสเครื่องที่เทียบเท่าเพื่อให้ CPU สามารถทำงานที่กำหนดไว้ในโปรแกรมได้ JIT ย่อมาจากคอมไพเลอร์ Just in Time เป็นองค์ประกอบสำคัญของ JVM นอกจากนี้ยังรองรับ JVM เพื่อเรียกใช้ Java bytecode เร็วขึ้น และปรับปรุงประสิทธิภาพของโปรแกรม Java

โปรดทราบว่า JIT ยังไม่ได้เปิดใช้งานบนแพ็คเก็จเว็บโฮสติ้งของเรา คุณลักษณะใหม่นี้ในภาษาการเขียนโปรแกรมอาจนำไปสู่จุดบกพร่องและข้อผิดพลาดในโค้ด PHP และเราต้องการตรวจสอบว่านักพัฒนาและ CMS ที่ใช้กันทั่วไปจะจัดการกับคุณลักษณะการเพิ่มประสิทธิภาพนี้อย่างไร

Attributes

แอตทริบิวต์คือประเภทของคลาสที่สามารถใช้เพื่อเพิ่มข้อมูลเมตาไปยังคลาส ฟังก์ชัน เมธอดของคลาส คุณสมบัติคลาส ค่าคงที่ และพารามิเตอร์อื่นๆ แอตทริบิวต์ไม่ทำอะไรเลยระหว่างรันไทม์ ตัวอย่างการใช้งาน https://www.php.net/manual/en/language.attributes.overview.php

Named arguments

ใน PHP 7 เคยมีพารามิเตอร์ตำแหน่ง นั่นหมายความว่า จำเป็นต้องกำหนดตำแหน่งของอาร์กิวเมนต์แรกให้กับพารามิเตอร์ตัวแรกเท่านั้น ค่าดีฟอลต์จะใช้สำหรับอาร์กิวเมนต์ที่ขาดหายไปในเวอร์ชัน PHP 7.x

ใน PHP 8 สามารถส่งอาร์กิวเมนต์ไปยังฟังก์ชันตามชื่อพารามิเตอร์ แทนที่จะส่งผ่านตำแหน่งพารามิเตอร์ คำสั่งไม่สำคัญใน PHP 8 อนุญาตให้ข้ามค่าเริ่มต้นแบบสุ่มและยังเป็นเอกสารด้วยตนเอง

Match expressions

เป็นคุณลักษณะใหม่ที่เพิ่มเข้ามาใน PHP 8 ซึ่งคล้ายกับคำสั่ง switch-case มาก แต่ให้ความหมายที่ปลอดภัยกว่า

Throw expressions

ก่อนหน้า PHP 8.0 ไม่อนุญาตให้ส่งข้อยกเว้นเมื่อคาดว่าจะมีนิพจน์เดียว ขณะนี้ เป็นไปได้ที่จะโยนข้อยกเว้นในฟังก์ชันลูกศร นิพจน์ที่ประกอบด้วยส่วน หรือที่อื่นๆ ที่ตัวแยกวิเคราะห์ PHP ต้องการนิพจน์เดียว

Union type

ในเวอร์ชันก่อน PHP 8.0 คุณสามารถประกาศคุณสมบัติ พารามิเตอร์ และประเภทส่งคืนได้เพียงประเภทเดียวเท่านั้น PHP 7.1 และเวอร์ชันที่ใหม่กว่ามีประเภท nullable ซึ่งหมายความว่าคุณสามารถประกาศประเภทให้nullมีการประกาศประเภทที่คล้ายกับ?string.

จาก PHP 8.0 คุณสามารถประกาศมากกว่าหนึ่งประเภทสำหรับอาร์กิวเมนต์ ประเภทส่งคืน และคุณสมบัติของคลาส

Mixed types

ชนิดผสมใน PHP 8 เป็นชนิดยูเนี่ยนในตัวใหม่ ชนิดผสมเทียบเท่ากับarray|bool|callable|int|float การผสมแบบไม่เหมือนกับการละเว้นแบบไปเลย

นั่นหมายความว่าโปรแกรมเมอร์ลืมที่จะเขียนมัน

บางครั้งโปรแกรมเมอร์ชอบที่จะละเว้นบางประเภทเพื่อให้เข้ากันได้กับเวอร์ชันที่เก่ากว่า

ชนิดผสมใน PHP 8 สามารถใช้property/return/parameterประเภทใดก็ได้ เราสามารถพูดได้ว่ามันรวมถึงค่า null, callable, ทรัพยากร, คลาสอ็อบเจ็กต์ทั้งหมด หรือประเภทสเกลาร์ทั้งหมดใน PHP ประเภทผสมเทียบเท่ากับประเภทสหภาพ

มีผลให้เว็บลไซต์ที่ใช้งาน WordPress เร็วขึ้น 5-10% 


Top