คุณลักษณะใหม่และปรับปรุงของ PHP 7.2.0

เผยแพร่แล้ว: 2018-03-03
รุ่นใหม่ของ PHP 7.2.0 มีส่วนเพิ่มเติมที่ยอดเยี่ยมมากมาย มีคุณสมบัติเพิ่มเติม การปรับปรุงใหม่ และฟังก์ชันการทำงานที่ดีขึ้น ช่วยให้ผู้ใช้สามารถเขียนโค้ดได้ดีขึ้นและใช้คุณลักษณะภาษาที่น่าสนใจหลายอย่างอย่างที่ไม่เคยมีมาก่อน ในโพสต์นี้ เราจะมาดูแง่มุมใหม่ล่าสุดที่นำมาใช้ในการทำซ้ำล่าสุดของ PHP


การอัปเดตมีการปรับปรุงใหม่มากมาย มันมาพร้อมกับคุณสมบัติมากมายที่ช่วยให้การเข้ารหัสดีขึ้น คุณลักษณะใหม่ใน PHP 7.2.0 ประกอบด้วย:

  • คำใบ้การพิมพ์วัตถุ
  • การนับวัตถุที่นับไม่ได้ต่างๆ
  • การแปลงคีย์ตัวเลขในการแคสต์อาร์เรย์/อ็อบเจกต์
  • ลบส่วนขยาย Mcrypt ออก
  • Argon2 ในแฮชรหัสผ่าน
  • HashContext เป็นวัตถุ
  • ค่าคงที่ TLS ที่ดีขึ้นเป็นค่าสติต่างๆ
  • ส่วนขยายโซเดียมใหม่

ดังที่เราทราบ นักพัฒนาเว็บมักชอบหรือเกลียดการใช้ภาษา PHP ใครก็ตามที่ชอบใช้ PHP อย่างแท้จริงจะต้องชอบโซลูชันการเข้ารหัสใหม่นี้อย่างแน่นอน

หากคุณเป็นนักพัฒนาเว็บที่ชอบทำงานกับ PHP ให้อ่านต่อไปในขณะที่เราพูดถึงคุณสมบัติใหม่ที่สำคัญที่สุดของการอัปเดต PHP 7.2.0

การปรับปรุงหลักใน PHP 7.2.0

ต่อไปนี้คือการปรับปรุงหลักบางส่วนในการอัปเดตล่าสุดของ PHP

วิธีแก้ปัญหาคุณสมบัติ Bug

จนกว่าจะมีการเปิดตัว PHP 7.2.0 มีจุดบกพร่องของคุณสมบัติคุณลักษณะที่ไม่ได้รับการแก้ไข ในการอัพเดทล่าสุด หากคุณสมบัติกำหนดคุณสมบัติ คลาสจะไม่สามารถกำหนดคุณสมบัติที่มีชื่อเดียวกันได้เว้นแต่จะเข้ากันได้มากกว่า (ค่าเริ่มต้นและการมองเห็นเหมือนกัน) มิฉะนั้นจะทำให้เกิดข้อผิดพลาดร้ายแรง

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

ประกาศประเภทการคืนสินค้า

การอัปเดตล่าสุดของ PHP 7 เพิ่มการสนับสนุนเพิ่มเติมสำหรับการประกาศประเภทการส่งคืน เช่นเดียวกับการประกาศประเภทอาร์กิวเมนต์ ประเภทการประกาศนี้ยังระบุประเภทของค่าที่น่าจะส่งคืนจากฟังก์ชัน สำหรับการประกาศประเภทการส่งคืน จะมีการนำเสนอประเภทเดียวกันกับการประกาศประเภทอาร์กิวเมนต์

ใน PHP 7.2.0 ผู้ใช้สามารถใช้การประกาศประเภทการส่งคืนในแง่ของประเภทข้อมูลอ็อบเจ็กต์

นอกจากนี้ การพิมพ์แบบเข้มงวดยังส่งผลต่อการประกาศประเภทการส่งคืนด้วย เมื่อพิจารณาถึงโหมดอ่อนที่เป็นค่าเริ่มต้น ค่าที่ส่งคืนทั้งหมดจะถูกบังคับเป็นประเภทที่ถูกต้อง (ในกรณีที่ต่างกันและไม่ใช่ประเภทนั้น) อย่างไรก็ตาม ในโหมดเข้มงวด ค่าที่ส่งคืนทั้งหมดต้องเป็นประเภทที่ถูกต้อง/ถูกต้อง มิฉะนั้นจะได้รับ TypeError

อย่างไรก็ตาม เมธอดลูกควรตรงกับการประกาศประเภทการส่งคืนกับเมธอดหลัก เมื่อคุณแทนที่เมธอดพาเรนต์ แต่ถ้าไม่ได้กำหนดประเภทการส่งคืนโดยวิธี parent วิธีย่อยอาจกำหนดได้

กำเนิดนิพจน์ส่งคืน

คุณลักษณะของ PHP นี้สร้างขึ้นจากฟังก์ชันที่เผยแพร่ใน PHP 5.5 ที่เรียกว่าฟังก์ชันตัวสร้าง อนุญาตให้ใช้คำสั่งส่งคืนในตัวสร้างและอนุญาตให้ส่งคืนนิพจน์สุดท้าย อย่างไรก็ตาม การส่งคืนโดยการอ้างอิงถูกจำกัด ค่าสามารถรับได้โดยใช้เมธอด Generator " getReturn()" ใหม่ ที่ใช้เฉพาะเมื่อตัวสร้างเสร็จสิ้นโดยให้ค่า

อย่างไรก็ตาม ความสามารถในการคืนค่าสุดท้ายอย่างชัดเจนโดยใช้เครื่องกำเนิดนั้นเป็นความสามารถที่สะดวกต่อการครอบครอง เนื่องจากมันยอมให้ค่าสุดท้ายส่งกลับโดยสมบูรณ์โดยตัวสร้าง ซึ่งสามารถจัดการได้โดยเฉพาะอย่างยิ่งโดยรหัสไคลเอนต์ที่ดำเนินการตัวสร้าง ในการเปรียบเทียบ วิธีนี้ง่ายกว่าการบังคับโค้ดไคลเอ็นต์ให้ตรวจสอบก่อนว่าได้ค่าสุดท้ายหรือไม่ จากนั้นจึงจัดการค่าโดยเฉพาะ

ตัวเลือกเซสชัน

ตอนนี้ Session_start() รู้จักตัวเลือกมากมายซึ่งจะแทนที่คำสั่งการกำหนดค่าเซสชันต่างๆ ที่ตั้งไว้ใน php.ini

นอกจากนี้ยังมีการขยายตัวเลือกเหล่านี้เพื่ออำนวยความสะดวกใน session.lazy_write ซึ่งยังคงเปิดอยู่โดยค่าเริ่มต้น และทำให้ PHP เขียนทับไฟล์เซสชันใดๆ ด้วยการเปลี่ยนแปลงของข้อมูลเซสชันเท่านั้นและ read_and_close นี่เป็นตัวเลือกที่ผ่านได้เฉพาะกับ session_start() เพื่อยืนยันว่าต้องอ่านข้อมูลเซสชัน จากนั้นเซสชันจะต้องปิดทันทีโดยไม่เปลี่ยนแปลง

การปรับปรุงความปลอดภัยใน PHP 7.2.0

ต่อไปนี้คือการปรับปรุงความปลอดภัยล่าสุดที่ใช้ใน PHP 7.2.0

Argon 2 Algorithm ในรหัสผ่าน Hash

Argon 2 ผู้ชนะการแข่งขัน Password Hashing ในปี 2548 เป็นอัลกอริธึมการแฮชที่แข็งแกร่ง Argon2 อยู่ในระหว่างได้รับการยอมรับว่าเป็นมาตรฐานอินเทอร์เน็ตสากล ในปัจจุบัน อัลกอริธึมถือว่าคุ้มค่าและปลอดภัยกว่า Bcrypt ซึ่งเป็นอัลกอริธึมการแฮชอื่น Argon2 ที่รวมใหม่สามารถใช้ผ่านฟังก์ชัน – password_hash()

ในขณะที่ Bcrypt คำนึงถึงปัจจัยต้นทุนเพียงปัจจัยเดียว Argon2 ใหม่คำนึงถึงปัจจัยต้นทุนสามประการต่อไปนี้-

  1. ค่าเวลา- กำหนดจำนวนการวนซ้ำของอัลกอริธึมการแฮช
  2. ต้นทุนหน่วยความจำ- กำหนดหมายเลข KiB ที่ต้องใช้ระหว่างการแฮช
  3. ปัจจัยความ เท่าเทียม - กำหนดจำนวนของเธรดคู่ขนานที่จะใช้ในระหว่างการแฮช

ปัจจัยต้นทุนเริ่มต้นถูกกำหนดโดยค่าคงที่ใหม่สามค่าดังนี้:

  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2-ค่าเริ่มต้น-THREADS
Lib-sodium แทนที่ Mcyrpt

การปรับปรุงที่สำคัญอีกประการหนึ่งใน PHP 7.2.0 คือการนำไลบรารีเข้ารหัส Mcrypt แบบเดิมออกจากแกน PHP และการเพิ่ม Libsodium

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

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


คุณลักษณะและฟังก์ชันที่เลิกใช้แล้ว

ต่อไปนี้คือฟังก์ชันและคุณลักษณะบางอย่างที่เลิกใช้แล้วของ PHP 7.2.0 ซึ่งคาดว่าจะถูกลบออกก่อนการเปิดตัวของ PHP 8.0

Gmp_random() ถือเป็นคุณลักษณะที่ขึ้นกับแพลตฟอร์มและมีแนวโน้มที่จะเลิกใช้งาน แต่จะใช้ gmp_random_rage() และ gmp_random_bits() แทน

(unset) การโยน เป็นอีกนิพจน์หนึ่งที่ส่งคืนค่าว่างโดยทั่วไปและถือว่าไร้ประโยชน์

แต่ละ() ถูกใช้เพื่อวนซ้ำ foreach() เช่นอาร์เรย์ แต่ foreach() เป็นที่ต้องการเนื่องจากความเร็วสูงกว่า

spl_autoload_register ใน PHP 5.1 ได้เข้ามาแทนที่ฟังก์ชัน _autoload แต่ตอนนี้ การเลิกใช้งานมีแนวโน้มที่จะเกิดขึ้นเมื่อพบฟังก์ชันในระหว่างการคอมไพล์

mbstring .fucc_overload ยังได้รับการตั้งค่าสำหรับการเลิกใช้งาน

ฟังก์ชัน ยืนยัน () ยืนยันการยืนยันที่กำหนดและดำเนินการอย่างเพียงพอหากมีผลลัพธ์เป็น เท็จ การใช้ assert() กับอาร์กิวเมนต์สตริง จะถูกยกเลิกเนื่องจากทำให้เกิดช่องโหว่ RCE

ตัวแปร $php_errormsg ถูกสร้างขึ้นในขอบเขตท้องถิ่นในขณะที่ได้รับข้อผิดพลาดที่ไม่ร้ายแรง แต่ตอนนี้ ด้วยการเปิดตัวของ PHP 7.2.0 จะใช้ error_clear_last และ error_get_last แทน

$errcontext มีแนวโน้มที่จะเลิกใช้งานเนื่องจากฟังก์ชันนี้ทำให้เกิดปัญหาในการเพิ่มประสิทธิภาพ เนื่องจาก $errcontext ใช้เพื่อแก้ไขวัตถุและการอ้างอิงทั้งหมดในขอบเขตปัจจุบัน ฟังก์ชันนี้จึงแทบไม่ได้ใช้งาน

Create_function() มีปัญหาด้านความปลอดภัยมากมาย นอกจากนี้ยังมีการใช้หน่วยความจำและปัญหาประสิทธิภาพการทำงานที่ไม่ดี

เหตุใดนักพัฒนา WordPress จึงควรใช้ PHP 7.2.0

การอัปเกรดล่าสุดเป็น PHP นำเสนอคุณลักษณะใหม่ๆ และมาตรการความปลอดภัยที่ได้รับการปรับปรุง ซึ่งอาจรวมถึงปัจจัยต่างๆ เช่น การเข้ารหัสที่ทันสมัย ​​การเพิ่มคุณสมบัติหลัก และความเร็วในการโหลดที่เร็วขึ้นสำหรับไซต์ต่างๆ

ประโยชน์ของการใช้ PHP

PHP เป็นภาษาที่เข้ากันได้สูงซึ่งสามารถใช้ได้กับฐานข้อมูลและมาตรฐานสากลของเซิร์ฟเวอร์เกือบทั้งหมด (เช่น PostgreSQL, MySQL, Sybase, Oracle, Microsoft SQL Server และ Informix) นำเสนอประสิทธิภาพที่รวดเร็วซึ่งได้รับการสนับสนุนจากชุมชนโอเพ่นซอร์ส

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

PHP ถูกใช้โดยเว็บไซต์ที่มีชื่อเสียงมากมาย เช่น Yahoo, Facebook และ Wikipedia

ที่สำคัญยิ่งกว่านั้น การอัปเดตล่าสุดของ PHP 7.2.0 นำเสนอการปรับปรุงความปลอดภัยที่สำคัญ คุณสมบัติใหม่ที่น่าตื่นเต้น และการปรับปรุงประสิทธิภาพ

ประสิทธิภาพของ PHP 7.2.0

ตามเกณฑ์มาตรฐานของฟีนิกซ์ PHP 7.2.0 นั้นเร็วกว่า 7.1 ถึง 13% และเร็วกว่า 7.0 เกือบ 20% เมื่อเทียบกับ PHP 2.6 (ยังคงใช้โดย 40% ของผู้ใช้ PHP) มันเร็วกว่าเกือบ 25%

มีการทดสอบมากมายที่สนับสนุนสถิติและผลการวิจัยเหล่านี้ เกณฑ์มาตรฐาน PHP อย่างเป็นทางการเปิดเผยว่า PHP 7 มีประสิทธิภาพเป็นสองเท่าและเร็วเป็นสองเท่าของ 5.6 PHP 7 มีเวลาแฝงครึ่งหนึ่ง นอกจากนี้ การวัดประสิทธิภาพอื่นๆ เช่น Kinsta แนะนำว่า PHP 7 อาจเร็วกว่าเวอร์ชันก่อนหน้าถึงสามเท่า

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

การสนับสนุนด้านความปลอดภัยของ PHP 7.2.0

PHP 7.2.0 ไม่มีการสนับสนุนด้านความปลอดภัยอีกต่อไป อย่างไรก็ตาม การสนับสนุนที่สำคัญจะยังคงมีอยู่จนถึงสิ้นปี 2018 ชุมชน PHP จะไม่ให้การสนับสนุนสำหรับปัญหาเล็กน้อยและจุดบกพร่องอีกต่อไป ข่าวดีก็คือการอัปเดตล่าสุดของ PHP 7.2.0 จะช่วยให้มั่นใจได้ว่าการอัปเดตความปลอดภัยขั้นสูงจะทำงานได้อย่างถูกต้อง และโครงการจะได้รับการสนับสนุนอย่างต่อเนื่องจากชุมชน PHP

Libsodium เป็นทั้งคุณสมบัติที่สำคัญและปรับปรุงมากที่สุดซึ่งได้ย้ายจาก PHP รุ่นเก่าไปเป็น PHP 7.2.0 โชคดีที่ Libsodium อัปเดตได้ง่ายมาก

หากคุณวางแผนที่จะอัปเดตเป็น PHP 7.2.0 ตรวจสอบให้แน่ใจว่าโค้ดของคุณประกอบด้วยการรวมและการทดสอบหน่วย การทดสอบดังกล่าวจะช่วยในการตรวจจับปัญหาที่เกี่ยวข้องกับแอปพลิเคชันก่อนที่จะปรากฏเป็นข้อบกพร่องในสภาพแวดล้อมแบบสด

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

เนื่องจาก PHP 7.2 นั้นเร็วกว่า PHP เวอร์ชันเก่ามาก ซึ่งช่วยให้ผู้ใช้สามารถนำเสนอบริการที่ได้รับการปรับปรุงให้ผู้ใช้เว็บไซต์ของตนได้โดยใช้โค้ดขั้นสูงของภาษา PHP

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

แจ้งให้เราทราบว่าคุณพบคุณลักษณะและฟังก์ชันที่ได้รับการปรับปรุงใหม่ของ PHP 7.2.0 ได้อย่างไรในส่วนความคิดเห็นด้านล่าง!