วันที่ 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 72. มาดู feature ใหม่ ๆ ที่น่าสนใจกันบ้าง
เคยเขียนอธิบาย feature ใหม่ของ PHP 7 ไว้บ้างแล้ว มาดู feature แปลก ๆ กันบ้าง Null Coalesce Operator มันคือ shorthand operator ของ isset() นั่นเอง ตัวอย่าง code เป็นดังนี้ [gist id="cbc143a8b8b25581b2ff" file="null_coalesce_operator.php"] Combined Comparison Operator หรือ Spaceship operator ( <==> ) ใช้สำหรับการเปรียบเทียบข้อมูล ซึ่งผลการทำงานจะออกมาเป็นตัวเลข 3 ค่า ดังนี้- เลขจำนวนเต็มบวก นั่นคือข้อมูลทางซ้ายมากกว่าทางขวา
- ศูนย์ นั่นคือข้อมูลทางซ้ายและทางขวาเท่ากัน
- เลขจำนวนเต็มลบ นั่นคือข้อมูลทางซ้ายน้อยกว่าทางขวา
- Coercive เป็น default คือส่งข้อมูลชิดอะไรไปก็ได้
- Stricts จะเข้มงวดนั่นเอง
ในความเป็นจริง Stricts มันน่าจะเป็น default นะ !!มาดูตัวอย่างการใช้ Stricts mode ดีกว่า ถ้าส่งข้อมูลไปผิดชนิดที่ประกาศไว้จะเกิด Exception ทันที [gist id="cbc143a8b8b25581b2ff" file="scalar_type_stricts.php"] กำหนดค่าคงที่ใน define() ได้ ใน php 5.6 นั้นสามารถทำได้ด้วยการใช้ keyword const ส่วนใน php 7.0.0 สามารถกำหนดได้ใน define() แล้ว ตัวอย่าง code เป็นดังนี้ [gist id="cbc143a8b8b25581b2ff" file="define_constant.php"]
อีกอย่างที่ชอบมาก ๆ คือ 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 มาแล้ว ถูกเอาออกไปหมด
พร้อมกับ PHP 7.0.0 กันหรือยัง ? หรือว่า PHP 5.6 ก็ยังไม่ ใช้กัน !!สวัสดี PHP 7.0.0 +_+ Reference Websites http://www.sitepoint.com/learn-php-7-find-out-whats-new-and-more/ https://github.com/tpunt/PHP7-Reference