portaldacalheta.pt
  • หลัก
  • การจัดการวิศวกรรม
  • Kpi และ Analytics
  • เทคโนโลยี
  • ว่องไว
แบ็คเอนด์

ข้อมูลเบื้องต้นเกี่ยวกับ PHP 7: มีอะไรใหม่และมีอะไรบ้าง



หนึ่งในเหตุการณ์ที่น่าตื่นเต้นที่สุดในโลก PHP ในปี 2015 คือการเปิดตัว PHP 7; 10 ปีหลังจากการเปิดตัวเวอร์ชันหลักล่าสุด PHP 5 ด้วยการก้าวไปข้างหน้า PHP 7 ได้นำเสนอคุณสมบัติและการอัปเดตประสิทธิภาพใหม่ ๆ มากมาย .

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



แต่เดี๋ยวก่อน PHP 6 หายไปไหน?

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



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



PHP 6 มีความทะเยอทะยาน แต่เป็นขยะ นี่คือวิธีที่เราลงเอยด้วย PHP 7 โดยข้ามเวอร์ชัน 6 ไปในกระบวนการ

PHP 6 มีความทะเยอทะยาน แต่เป็นขยะ นี่คือวิธีที่เราลงเอยด้วย PHP 7 โดยข้ามเวอร์ชัน 6 ไปในกระบวนการ ทวีต

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



เนื่องจากทรัพยากรเช่นหนังสือและบทความได้ถูกเขียนขึ้นสำหรับ PHP 6 และการสนับสนุน Unicode เวอร์ชันใหม่จะเปลี่ยนชื่อเป็น PHP 7 เพื่อหลีกเลี่ยงความสับสน

อย่างไรก็ตามความทุกข์ทรมานจากอดีตที่น่าเศร้าก็เพียงพอแล้วเรามาดูกันว่า PHP 7 นำมาสู่งานปาร์ตี้อย่างไร



Performance Battle, PHP 7 เทียบกับ PHP 5

ด้วยการอัปเดตเกือบทั้งหมดคาดว่าจะมีการปรับปรุงประสิทธิภาพเล็กน้อย อย่างไรก็ตามคราวนี้ PHP นำการปรับปรุงที่สำคัญกว่าเวอร์ชันก่อนหน้าซึ่งทำให้ประสิทธิภาพที่แท้จริงเป็นหนึ่งในคุณสมบัติที่น่าสนใจที่สุดของ PHP 7 ซึ่งเป็นส่วนหนึ่งของโครงการ“ PHPNG” ซึ่งกล่าวถึงส่วนประกอบภายในของเครื่องยนต์ Zend

ด้วยการปรับโครงสร้างข้อมูลภายในใหม่และเพิ่มขั้นตอนกลางในการเขียนโค้ดการคอมไพล์ในรูปแบบของ Abstract Syntax Tree (AST) ผลลัพธ์ที่ได้คือประสิทธิภาพที่เหนือกว่าและการจัดสรรหน่วยความจำที่มีประสิทธิภาพมากขึ้น ตัวเลขนั้นดูมีแนวโน้มมาก เกณฑ์มาตรฐาน ในแอปพลิเคชันในโลกแห่งความเป็นจริงแสดงให้เห็นว่า PHP 7 เร็วกว่า PHP 5.6 โดยเฉลี่ยถึงสองเท่าและส่งผลให้ใช้หน่วยความจำน้อยลง 50% ในระหว่างการร้องขอทำให้ PHP 7 เป็นคู่แข่งที่แข็งแกร่งของคอมไพเลอร์ HHVM JIT ของ Facebook ดูอินโฟกราฟิกของ Zend ที่แสดงให้เห็นถึงประสิทธิภาพของสิ่งที่พบบ่อย กรอบ CMS y .



PHP 7 ดูแล้วรู้สึกคุ้นเคย แต่ได้รับการปรับแต่งเพื่อประสิทธิภาพ Zend Motor ที่ได้รับการปรับปรุงและประสิทธิภาพที่เพิ่มขึ้นสร้างความแตกต่างอย่างมาก

PHP 7 ดูแล้วรู้สึกคุ้นเคย แต่ได้รับการปรับแต่งเพื่อประสิทธิภาพ Zend Motor ที่ได้รับการปรับปรุงและประสิทธิภาพที่เพิ่มขึ้นสร้างความแตกต่างอย่างมาก ทวีต

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



PHP 7 Syntactic Sugar

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

การประกาศการนำเข้ากลุ่ม

ตอนนี้เราสามารถจัดกลุ่มการประกาศการนำเข้าสำหรับคลาสที่มาจากเนมสเปซเดียวกันในบรรทัด 'ใช้' สิ่งนี้จะช่วยในการจัดแนวการประกาศให้มีความหมายหรือบันทึกเพียงไม่กี่ไบต์ในไฟล์ของคุณ



use FrameworkModuleFoo; use FrameworkModuleBar; use FrameworkModuleBaz;

ด้วย PHP 7 เราสามารถใช้:

use FrameworkModule{Foo, Bar, Baz};

หรือถ้าเราชอบแบบหลายเส้น:

use FrameworkModule{ Foo, Bar, Baz };

Null Coalescent Operator

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

ก่อน PHP 7:

if (isset($foo)) { $bar = $foo; } else { $bar = 'default'; // we would give $bar the value 'default' if $foo is NULL }

หลังจาก PHP 7:

$bar = $foo ?? 'default';

นอกจากนี้ยังสามารถผูกมัดกับตัวแปรต่างๆได้:

$bar = $foo ?? $baz ?? 'default';

ผู้ดำเนินการยานอวกาศ

ตัวดำเนินการยานอวกาศอนุญาตให้มีการเปรียบเทียบสามทางระหว่างค่าสองค่าไม่เพียง แต่ระบุว่าค่าเท่ากัน แต่ยังมีค่ามากกว่าด้วยการส่งกลับ 1.0 หรือ -1

ที่นี่เราสามารถดำเนินการต่างๆได้ขึ้นอยู่กับความแตกต่างของค่า:

switch ($bar $foo) { case 0: echo '$bar and $foo are equal'; case -1: echo '$foo is bigger'; case 1: echo '$bar is bigger'; }

ค่าที่เปรียบเทียบอาจเป็นจำนวนเต็มลอยสตริงหรือแม้แต่อาร์เรย์ ดูเอกสารประกอบเพื่อให้ทราบว่าค่าต่างๆเปรียบเทียบกันอย่างไร

ฟังก์ชั่นใหม่ใน PHP 7

แต่แน่นอนว่า PHP 7 ยังนำเสนอฟังก์ชันใหม่ที่น่าตื่นเต้น

ประเภทของพารามิเตอร์สเกลาร์และคำแนะนำประเภทการส่งคืน

PHP 7 ขยายการประกาศพารามิเตอร์ประเภทก่อนหน้าในเมธอด (คลาสอินเทอร์เฟซและอาร์เรย์) โดยการเพิ่มสเกลาร์สี่ประเภท จำนวนเต็ม (int), ลอย ( float), บูลีน (bool) และ สตริง ( string) เป็นประเภทพารามิเตอร์ที่เป็นไปได้

นอกจากนี้เรายังสามารถระบุประเภทของวิธีการและฟังก์ชันที่พวกเขาส่งคืนได้ ประเภทที่รองรับ ได้แก่ * bool *, * int *, * float *, * string *, * array *, * callable *, * Class * หรือ * Interface * name, * self * และ * parent * (สำหรับเมธอดคลาส)

Clase Calculadora { // Declaramos que los parámetros proporcionados son del tipo entero Función Pública addTwoInts (int $ x, int $ y): int { Retorno $ x + $ y; // También decimos explícitamente que este método devolverá un entero } }

การประกาศประเภทช่วยให้สร้างแอปพลิเคชันที่มีประสิทธิภาพมากขึ้นและหลีกเลี่ยงการส่งผ่านและส่งคืนค่าที่ไม่ถูกต้องจากฟังก์ชัน ประโยชน์อื่น ๆ ได้แก่ ตัวแยกวิเคราะห์รหัสแบบคงที่และ IDE ซึ่งให้มุมมองที่ดีขึ้นของฐานรหัสหากไฟล์ DocBlocks

เนื่องจาก PHP เป็นภาษาในการพิมพ์ที่อ่อนแอค่าบางอย่างสำหรับพารามิเตอร์และประเภทการส่งคืนจะถูกส่งออกตามบริบท หากเราส่งค่า '3' ในฟังก์ชันที่มีการประกาศพารามิเตอร์เป็นประเภท int ล่ามจะยอมรับเป็นจำนวนเต็มและจะไม่ส่งข้อผิดพลาด หากคุณไม่ต้องการสิ่งนี้คุณสามารถเปิดใช้งาน modo estricto เพิ่มคำสั่งของ declarar

Declarar (tipos_estrictos = 1);

สิ่งนี้ถูกตั้งค่าเป็นรายไฟล์เนื่องจากตัวเลือกส่วนกลางจะแบ่งที่เก็บโค้ดออกเป็นที่เก็บโค้ดที่สร้างขึ้นด้วยความเข้มงวดระดับโลก ใน และสิ่งที่ไม่ได้ส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิดเมื่อเรารวมโค้ดจากทั้งสองอย่างเข้าด้วยกัน

ข้อยกเว้นของเครื่องยนต์

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

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

การเพิ่มข้อยกเว้นของเอ็นจิ้นใน PHP 7 ช่วยป้องกันการหยุดสคริปต์และปรับปรุงการจัดการข้อผิดพลาด

PHP 7 ดูแล้วรู้สึกคุ้นเคย แต่ได้รับการปรับแต่งเพื่อประสิทธิภาพ Zend Motor ที่ได้รับการปรับปรุงและประสิทธิภาพที่เพิ่มขึ้นสร้างความแตกต่างอย่างมาก ทวีต

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

ก่อน PHP 7 สิ่งนี้จะยุติสคริปต์ด้วยข้อผิดพลาดร้ายแรง:

try { thisFunctionDoesNotEvenExist(); } catch (EngineException $e) { // Clean things up and log error echo $e->getMessage(); }

คลาสที่ไม่ระบุชื่อ

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

ก่อน PHP 7

php class MyLogger { public function log($msg) { print_r($msg . ' '); } } $pusher->setLogger( new MyLogger() );

ด้วยคลาสที่ไม่ระบุชื่อ:

php $pusher->setLogger(new class { public function log($msg) { print_r($msg . ' '); } });

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

ฟังก์ชัน CSPRNG

เพิ่มฟังก์ชันใหม่สองฟังก์ชันเพื่อสร้างจำนวนเต็มและสตริงที่มีการเข้ารหัสลับ

random_bytes(int $len);

ส่งคืนสตริงสุ่มที่มีความยาว $len

php random_int(int $min, int $max);

ส่งคืนตัวเลขระหว่าง $min และ $max

Codepoint Unicode Escape Syntax

ซึ่งแตกต่างจากภาษาอื่น ๆ ก่อน PHP 7 PHP ไม่มีวิธีหลีกเลี่ยงรหัส Unicode ในตัวอักษรสตริง ฟังก์ชันนี้จะเพิ่มลำดับการหลีกเลี่ยง `` u 'เพื่อสร้างอักขระเหล่านั้นโดยใช้โค้ดโค้ด UTF-8 ของคุณ สิ่งนี้ดีกว่าการแทรกอักขระโดยตรงทำให้สามารถจัดการอักขระที่มองไม่เห็นได้ดีขึ้นรวมถึงอักขระที่มีการแสดงกราฟิกเหมือนกัน แต่มีความหมายแตกต่างกัน

echo 'u{1F602}'; // outputs ‚

โปรดทราบว่าสิ่งนี้จะทำลายรหัสที่มีอยู่ด้วยลำดับ ` u 'เนื่องจากจะเปลี่ยนพฤติกรรม

เครื่องกำเนิดไฟฟ้าได้รับการอัพเกรด

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

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

function genA() { yield 2; yield 3; yield 4; } function genB() { yield 1; yield from genA(); // 'genA' Se llama aquí e itera sobre yield 5; return 'success'; // Este es un resultado final que podemos comprobar más tarde } foreach (genB() as $val) { echo ' $val'; // Esto emitirá los valores 1 a 5 para} $genB()->getReturn(); // Esto debería devolver el 'éxito' cuando no hay errores.

ความคาดหวัง

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

Afirmar () กลายเป็นโครงสร้างภาษาใน PHP 7 การยืนยันควรใช้เพื่อวัตถุประสงค์ในการดีบักในสภาพแวดล้อมการพัฒนาและทดสอบเท่านั้น ในการกำหนดค่าพฤติกรรมเรามีคำสั่งใหม่สองคำสั่ง

  • zend.afirmación - 1: สร้างและรันโค้ด (โหมดการพัฒนา) (ค่าเริ่มต้น) - 0: สร้างโค้ด แต่ข้ามไปรอบ ๆ ที่รันไทม์ - -1: อย่าสร้างโค้ดซึ่งทำให้ไม่มีค่าใช้จ่าย (โหมดการผลิต)
  • afirmación.excepción - 1: โยนเมื่อการยืนยันล้มเหลวโยนวัตถุที่ให้ไว้เป็นข้อยกเว้นหรือโยนวัตถุ * ErrorAffirmation * ใหม่หากไม่มีการระบุข้อยกเว้น - 0: ใช้หรือสร้าง * Throwable * ตามที่อธิบายไว้ ข้างต้น แต่จะสร้างคำเตือนตามวัตถุนั้นแทนที่จะโยนทิ้ง (เข้ากันได้กับพฤติกรรม PHP 5)

การเตรียมตัวไปจาก PHP 5 เป็น PHP 7

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

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

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

SAPI เก่าและส่วนขยาย

ที่สำคัญที่สุด SAPI เก่าและเลิกใช้แล้วถูกลบออกเป็นส่วนขยาย mysql (แต่คุณไม่ควรใช้สิ่งนี้ตั้งแต่แรกใช่มั้ย?) สำหรับรายการส่วนขยายทั้งหมดและไฮไลต์ที่ถูกลบออกคุณสามารถตรวจสอบ RFCs นี้ได้ ที่นี่ ย ที่นี่ .

นอกจากนี้ SAPI อื่น ๆ จะถูกย้ายไปยัง PHP 7

SAPI และส่วนขยายเก่าจำนวนมากถูกลบออกจาก PHP 7 เราคาดการณ์ว่าจะไม่สูญหาย

SAPI และส่วนขยายเก่าจำนวนมากถูกลบออกจาก PHP 7 เราคาดการณ์ว่าจะไม่สูญหาย ทวีต

ไวยากรณ์ตัวแปรสม่ำเสมอ

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

// old meaning // new meaning $$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz'] $foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz'] $foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz']() Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()

สิ่งนี้จะทำลายพฤติกรรมของแอปพลิเคชันที่เข้าถึงค่าเช่นนี้ ในทางกลับกันคุณสามารถทำสิ่งที่เรียบร้อยเช่นนี้:.

// Nested () foo()(); // Calls the return of foo() $foo->bar()(); // IIFE syntax like JavaScript (function() { // Function body })(); // Nested :: $foo::$bar::$baz

แท็กแบบเก่าถูกลบออก

แท็กเปิด / ปิด `` , , ... `ถูกลบออกและใช้ไม่ได้อีกต่อไป การแทนที่ด้วยสิ่งที่ถูกต้องควรเป็นเรื่องง่าย แต่คุณจะทำอย่างไรกับพวกเขาแปลก ๆ ?

ชื่อไม่ถูกต้องสำหรับคลาสอินเทอร์เฟซและลักษณะ

อันเป็นผลมาจากการเพิ่มเช่นคลาสประเภท return และพารามิเตอร์อินเทอร์เฟซและคุณสมบัติไม่สามารถมีชื่อต่อไปนี้ได้อีกต่อไป:

- บูล - int - ลอย - สตริง - null - จริง - เท็จ

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

-ทรัพยากร

วัตถุ - ผสม - ตัวเลข

การละเว้นจากการใช้งานควรช่วยให้คุณไม่ต้องเสียเวลาเปลี่ยนใหม่ในอนาคต สำหรับรายการการเปลี่ยนแปลงทั้งหมดที่อาจทำลายความเข้ากันได้โปรดดูที่นี่ เอกสาร .

คุณยังสามารถใช้ php7cc ซึ่งจะตรวจสอบโค้ดของคุณและสามารถตรวจพบปัญหาที่อาจเกิดขึ้นหากคุณย้ายไปที่ PHP 7 แต่แน่นอนว่าไม่มีวิธีใดที่ดีไปกว่าการติดตั้ง PHP 7 และตรวจสอบด้วยตัวคุณเอง ## ปัญหาความเข้ากันได้ของ PHP ที่เป็นไปได้ ### ความเข้ากันได้ของโครงสร้างพื้นฐาน PHP 7

เส้นทางที่ผลิตภัณฑ์หรือบริการเข้าถึงลูกค้าเรียกว่า

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

ในทางกลับกันบริการที่นำเสนอโดยเซิร์ฟเวอร์ส่วนตัวเสมือนหรือเซิร์ฟเวอร์เฉพาะจะได้รับประโยชน์อย่างเต็มที่จากประสิทธิภาพการทำงานนี้ บริการบางอย่างของ PaaS เช่น Heroku รองรับ PHP 7 ตั้งแต่เริ่มต้น แต่บริการอื่น ๆ เช่น AWS Beanstalk ย OpenShift de Oracle กำลังล้าหลัง ตรวจสอบเว็บไซต์ของผู้ให้บริการ PaaS ของคุณเพื่อดูว่ารองรับ PHP 7 แล้วหรือไม่หรือมีการสนับสนุนในอนาคตอันใกล้นี้หรือไม่ แน่นอนว่าผู้ให้บริการ IaaS ช่วยให้คุณสามารถควบคุมฮาร์ดแวร์และติดตั้ง PHP 7 (หรือคอมไพล์ได้ตามที่คุณต้องการ) แพ็คเกจ PHP 7 พร้อมใช้งานสำหรับสภาพแวดล้อม IaaS หลัก ๆ ทั้งหมดแล้ว

ความเข้ากันได้ของซอฟต์แวร์ PHP 7

นอกเหนือจากความเข้ากันได้ของโครงสร้างพื้นฐานแล้วคุณควรระวังปัญหาความเข้ากันได้ของซอฟต์แวร์ที่อาจเกิดขึ้นด้วย ระบบจัดการเนื้อหายอดนิยมเช่น WordPress, Joomla และ Drupal ได้เพิ่มการรองรับ PHP 7 ด้วยเวอร์ชันล่าสุด เฟรมที่สำคัญเช่น Symfony และ Laravel ยังได้รับการสนับสนุนอย่างเต็มที่ อย่างไรก็ตามถึงเวลาแล้วที่ควรระมัดระวัง การสนับสนุนนี้ไม่ครอบคลุมถึงรหัสของบุคคลที่สามในรูปแบบของปลั๊กอินปลั๊กอินแพ็คเกจหรือสิ่งที่ CMS หรือกรอบงานเรียกใช้ พวกเขาอาจประสบปัญหาความเข้ากันได้และเป็นความรับผิดชอบของคุณที่จะต้องตรวจสอบให้แน่ใจว่าทุกอย่างพร้อมสำหรับ PHP 7

สำหรับที่เก็บที่ใช้งานอยู่และได้รับการดูแลไม่น่าจะเป็นปัญหา อย่างไรก็ตามที่เก็บข้อมูลเก่าที่ไม่ต้องบำรุงรักษาซึ่งขาดการรองรับ PHP 7 อาจทำให้แอปพลิเคชันทั้งหมดของคุณใช้งานไม่ได้

อนาคตของ PHP

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

ที่เกี่ยวข้อง: รายการข้อผิดพลาด 10 ประการที่นักพัฒนา PHP ทำ>

Zeplin Sketch Plugin - สะพานเวิร์กโฟลว์ระหว่างการออกแบบและวิศวกรรม

เครื่องมือและบทช่วยสอน

Zeplin Sketch Plugin - สะพานเวิร์กโฟลว์ระหว่างการออกแบบและวิศวกรรม
การไหลของข้อมูลอย่างง่ายในแอป React โดยใช้ Flux และ Backbone: บทช่วยสอนพร้อมตัวอย่าง

การไหลของข้อมูลอย่างง่ายในแอป React โดยใช้ Flux และ Backbone: บทช่วยสอนพร้อมตัวอย่าง

วิทยาศาสตร์ข้อมูลและฐานข้อมูล

โพสต์ยอดนิยม
Nvidia Shield - สิ่งที่แตกต่างบนคอนโซลเกม Android
Nvidia Shield - สิ่งที่แตกต่างบนคอนโซลเกม Android
แผ่นโกงการจัดการโครงการ
แผ่นโกงการจัดการโครงการ
เริ่มต้นใช้งาน Microservices: บทช่วยสอน Dropwizard
เริ่มต้นใช้งาน Microservices: บทช่วยสอน Dropwizard
การแยกการเรียกเก็บเงิน: เรื่องของการเพิ่มประสิทธิภาพ API ภายใน GraphQL
การแยกการเรียกเก็บเงิน: เรื่องของการเพิ่มประสิทธิภาพ API ภายใน GraphQL
กรณีศึกษา: การใช้ ApeeScape เพื่อม้วนปลาใหญ่
กรณีศึกษา: การใช้ ApeeScape เพื่อม้วนปลาใหญ่
 
การประมาณต้นทุนซอฟต์แวร์ในการจัดการโครงการแบบ Agile
การประมาณต้นทุนซอฟต์แวร์ในการจัดการโครงการแบบ Agile
แชทล่ม - เมื่อ Chatbot ล้มเหลว
แชทล่ม - เมื่อ Chatbot ล้มเหลว
ที่ปรึกษาการระดมทุนกับนายหน้า - ตัวแทนจำหน่าย
ที่ปรึกษาการระดมทุนกับนายหน้า - ตัวแทนจำหน่าย
ทำให้ Web Front-end เชื่อถือได้ด้วย Elm
ทำให้ Web Front-end เชื่อถือได้ด้วย Elm
คู่มือสำหรับนักลงทุนเกี่ยวกับน้ำมันปาล์ม
คู่มือสำหรับนักลงทุนเกี่ยวกับน้ำมันปาล์ม
โพสต์ยอดนิยม
  • ฉันควรใช้ php 7 . หรือไม่
  • บริษัทตัดสินใจว่าจะลงทุนเท่าไรโดยเปรียบเทียบอัตราผลตอบแทนจากโครงการกับ
  • วิธีการทดสอบผู้ใช้
  • คำถามที่ขยันเนื่องจากที่จะถาม
  • การเรียนรู้เครื่องหลามโดยตัวอย่าง
หมวดหมู่
  • การจัดการวิศวกรรม
  • Kpi และ Analytics
  • เทคโนโลยี
  • ว่องไว
  • © 2022 | สงวนลิขสิทธิ์

    portaldacalheta.pt