php7
วันที่ 3 พฤจิกายน 2558 ทีมพัฒนา PHP ได้ปล่อย PHP 7.0.0 ออกมาอย่างเป็นทางการ
เป็นการเปลี่ยนแปลงครั้งยิ่งใหญ่ ทั้งตัวภาษา และ Zend engine
ซึ่งมีการเพิ่มเติม เปลี่ยนแปลง และ ปรับปรุง feature มากมาย
มาดูกันว่ามีอะไรบ้าง

มีสถิติที่น่าสนใจจากทีมพัฒนา

10033 commits
48 RFCs
189 contributors

1. ปรับปรุงประสิทธิการทำงาน

ซึ่งบอกว่า PHP 7.0.0 นั้นทำงานเร็วกว่า PHP 5.6 ประมาณ 2 เท่า
ลดจำนวน memory ที่ใช้งาน

มาดูข้อมูลการทดสอบ performance กันหน่อย จาก Turbocharging the Web with PHP 7

Screen Shot 2558-12-04 at 9.35.50 AM

Screen Shot 2558-12-04 at 9.36.10 AM

Screen Shot 2558-12-04 at 9.36.24 AM

Screen Shot 2558-12-04 at 9.36.38 AM

2. มาดู feature ใหม่ ๆ ที่น่าสนใจกันบ้าง

เคยเขียนอธิบาย feature ใหม่ของ PHP 7 ไว้บ้างแล้ว

มาดู feature แปลก ๆ กันบ้าง

Null Coalesce Operator
มันคือ shorthand operator ของ isset() นั่นเอง

ตัวอย่าง code เป็นดังนี้

Combined Comparison Operator หรือ Spaceship operator ( <==> )
ใช้สำหรับการเปรียบเทียบข้อมูล
ซึ่งผลการทำงานจะออกมาเป็นตัวเลข 3 ค่า ดังนี้

  • เลขจำนวนเต็มบวก นั่นคือข้อมูลทางซ้ายมากกว่าทางขวา
  • ศูนย์ นั่นคือข้อมูลทางซ้ายและทางขวาเท่ากัน
  • เลขจำนวนเต็มลบ นั่นคือข้อมูลทางซ้ายน้อยกว่าทางขวา

ตัวอย่าง code เป็นดังนี้

ข้อจำกัดคือ
ไม่สามารถใช้กับ Object ได้นะ
และไม่สามารถเปรียบเทียบข้อมูลต่อกันได้นะ
เช่น 1 <==> 2 <==> 3

Scalar Type Declarations
ใช้สำหรับการบังคับให้ชนิดข้อมูลที่ส่งไปยัง method ต่าง ๆ ถูกต้อง
ซึ่งมีอยู่ 2 mode คือ

  • Coercive เป็น default คือส่งข้อมูลชิดอะไรไปก็ได้
  • Stricts จะเข้มงวดนั่นเอง

ในความเป็นจริง Stricts มันน่าจะเป็น default นะ !!

มาดูตัวอย่างการใช้ Stricts mode ดีกว่า
ถ้าส่งข้อมูลไปผิดชนิดที่ประกาศไว้จะเกิด Exception ทันที

กำหนดค่าคงที่ใน define() ได้
ใน php 5.6 นั้นสามารถทำได้ด้วยการใช้ keyword const
ส่วนใน php 7.0.0 สามารถกำหนดได้ใน define() แล้ว

ตัวอย่าง code เป็นดังนี้

อีกอย่างที่ชอบมาก ๆ คือ Exception ของ Engine

ซึ่ง engine ตัวใหม่จะพยายามแปลง error ต่าง ๆ ไปอยู่ในรูปแบบของ Exception
เพื่อทำให้ดักจับ error ต่าง ๆ ได้ง่ายขึ้น
รวมทั้งสามารถ custom exception ตามที่ต้องการได้อีกด้วย
นี่มันภาษา Java เลยนะเนี่ย

ส่วน feature ที่มัน deprecated กับเอาออกไปก็เยอะนะ

เช่น

  • PHP 4 constructor ที่เป็น __construct() ก็ถูก deprecated ไปแล้ว ถ้าใช้งานจะแจ้งว่า E_DREPRECATED ส่วนใน PHP 8 เอาออกแน่นอน
  • Warning date.timezone ถูกเอาออกไปแล้ว ดีใจอย่างมาก
  • PHP tag ใช้ได้อันเดียวนะ คือ standard ของมัน เพื่อลดความสับสนวุ่นวาย
  • ไม่สามารถกำหนดชื่อของ argument ใน method ซ้ำได้แล้ว
  • Server API (SAPI) ถูกเอาออกไปจนสิ้น
  • feature ที่มัน deprecated มาแล้ว ถูกเอาออกไปหมด

Source code ตัวอย่างอยู่ที่ Github::Up1::Hello PHP7

ขอเชิญ Download มาใช้งานกันได้ที่ PHP 7 Download
และเชิญ Migrate กันได้แล้วนะ รับรองตายเพียบ !!

พร้อมกับ PHP 7.0.0 กันหรือยัง ?
หรือว่า PHP 5.6 ก็ยังไม่ ใช้กัน !!

สวัสดี PHP 7.0.0 +_+

Screen Shot 2558-12-04 at 1.34.29 PM

Reference Websites
http://www.sitepoint.com/learn-php-7-find-out-whats-new-and-more/
https://github.com/tpunt/PHP7-Reference

Tags:,