Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?

Php 7.4, bản phát hành nhỏ của Php 7 tiếp theo, đã được phát hành cho tính khả dụng chung vào ngày 28 tháng 11 năm 2019. Vì vậy, đã đến lúc chúng tôi đi sâu vào một số bổ sung thú vị nhất và các tính năng mới sẽ giúp PHP nhanh hơn và đáng tin cậy hơn.

Php 7.4 (Bản phát hành chính thức) có sẵn cho tất cả các máy khách Kinsta & nbsp; trong bảng điều khiển Mykinsta. 🤘 in the MyKinsta dashboard. 🤘

Ngay cả khi PHP 7.4 tăng đáng kể hiệu suất và cải thiện khả năng đọc mã, PHP 8 sẽ là cột mốc thực sự cho hiệu suất PHP, vì đề xuất cho sự bao gồm JIT đã được phê duyệt.

Dù sao, hôm nay chúng tôi đã trải qua một số tính năng thú vị nhất và những thay đổi mà chúng tôi mong đợi với Php 7.4. Chỉ cho hồ sơ, đây là những ngày quan trọng cho phiên bản 7.4:

  • Ngày 6 tháng 6 năm 2019: Php 7.4 Alpha 1
  • Ngày 18 tháng 7 năm 2019: Php 7.4 Beta 1 - Đặc điểm đóng băng
  • Ngày 28 tháng 11 năm 2019: Phát hành Php 7.4 GA

Bạn có thể kiểm tra danh sách đầy đủ các tính năng và bổ sung trên trang RFC chính thức.

Những gì mới trong PHP với PHP 7.4?

Trong bài đăng này, chúng tôi bao gồm một số thay đổi và tính năng cần được thêm vào ngôn ngữ với bản phát hành cuối cùng của Php 7.4:


Quên Array_merge: Php 7.4 mang đến toán tử lây lan trong biểu thức mảng

Có sẵn từ Php 5.6, việc giải nén đối số là một cú pháp để giải nén các mảng và truyền tải vào danh sách đối số. Để giải nén một mảng hoặc một đường truyền, nó phải được chuẩn bị bởi (3 chấm), như được hiển thị trong ví dụ sau:

function test(...$args) { var_dump($args); }
test(1, 2, 3);

Bây giờ Php 7.4 RFC này đề xuất mở rộng tính năng này để định nghĩa mảng:

$arr = [...$args];

Lợi ích đầu tiên của toán tử lây lan trong biểu thức mảng là tất cả về hiệu suất. Trên thực tế, tài liệu RFC tuyên bố:Spread Operator in array expression is all about performance. In fact, the RFC doc states:

Nhà điều hành lan truyền nên có hiệu suất tốt hơn

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
7. Điều đó không chỉ bởi vì toán tử lan truyền là cấu trúc ngôn ngữ trong khi
Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
7 là một hàm, mà còn bởi vì tối ưu hóa thời gian biên dịch có thể được thực hiện cho các mảng không đổi.

Một lợi thế đáng kể của toán tử lây lan là nó hỗ trợ bất kỳ đối tượng có thể đi được nào, trong khi hàm

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
7 chỉ hỗ trợ các mảng.

Dưới đây là một ví dụ về việc giải nén đối số trong biểu thức mảng:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);

Nếu bạn chạy mã này trong Php 7.3 trở lên, PHP đã ném lỗi phân tích cú pháp:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3

Thay vào đó, Php 7.4 sẽ trả về một mảng:

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}

RFC nói rằng chúng ta có thể mở rộng cùng một mảng nhiều lần. Hơn nữa, chúng ta có thể sử dụng cú pháp vận hành lây lan ở mọi nơi trong mảng, vì các phần tử bình thường có thể được thêm vào trước hoặc sau khi vận hành lan truyền. Vì vậy, mã sau sẽ hoạt động như chúng ta có thể mong đợi:

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];

Nó cũng có thể giải nén các mảng được trả về bởi một hàm trực tiếp vào một mảng mới:

function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];

Php 7.4 đầu ra mảng sau:

array(6) {
	[0]=>
	string(3) "red"
	[1]=>
	string(5) "green"
	[2]=>
	string(4) "blue"
	[3]=>
	string(4) "pink"
	[4]=>
	string(6) "violet"
	[5]=>
	string(6) "yellow"
}

Chúng ta cũng có thể sử dụng cú pháp của Trình tạo:

function generator() {
	for ($i = 3; $i <= 5; $i++) {
		yield $i;
	}
}
$arr1 = [0, 1, 2, ...generator()];

Nhưng chúng tôi không được phép giải nén các mảng được truyền qua tham chiếu. Xem xét ví dụ sau:

$arr1 = ['red', 'green', 'blue'];
$arr2 = [...&$arr1];

Nếu chúng tôi cố gắng giải nén một mảng bằng tham chiếu, PHP đã ném lỗi phân tích sau:

$arr = [...$args];
0

Dù sao, nếu các phần tử của mảng đầu tiên được lưu trữ bởi tham chiếu, chúng cũng được lưu trữ bằng tham chiếu trong mảng thứ hai. Đây là một ví dụ:

$arr = [...$args];
1

Và đây là những gì chúng ta nhận được với Php 7.4:

$arr = [...$args];
2

Đề xuất của nhà điều hành lan truyền được thông qua với 43 đến 1 phiếu bầu.

Hàm mũi tên 2.0 (đóng cửa ngắn)

Trong PHP, các chức năng ẩn danh được coi là khá dài dòng và khó thực hiện và duy trì. RFC này đề xuất việc giới thiệu cú pháp ngắn hơn và rõ ràng hơn của các hàm mũi tên (hoặc đóng ngắn), điều đó sẽ cho phép chúng tôi làm sạch mã PHP đáng kể.arrow functions (or short closures), that should allow us to clean up significantly our PHP code.

Xem xét ví dụ sau:

$arr = [...$args];
3

Php 7.4 cho phép sử dụng cú pháp súc tích hơn và hàm trên có thể được viết lại như sau:

$arr = [...$args];
4

Hiện tại, các hàm ẩn danh (đóng) có thể kế thừa các biến được xác định trong phạm vi cha mẹ nhờ cấu trúc ngôn ngữ

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
0, như được hiển thị bên dưới:

$arr = [...$args];
5

Nhưng với PHP 7.4, các biến được xác định trong phạm vi cha mẹ được nắm bắt hoàn toàn bởi giá trị (liên kết phạm vi giá trị tiềm ẩn). Vì vậy, chúng ta có thể viết toàn bộ chức năng thấy ở trên trên một dòng duy nhất:implicitly captured by value (implicit by-value scope binding). So we can write the whole function seen above on a single line:

$arr = [...$args];
6

Biến được xác định trong phạm vi cha mẹ có thể được sử dụng trong hàm mũi tên chính xác như thể chúng ta đang sử dụng

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
1 và nó không thể sửa đổi một biến từ phạm vi cha mẹ.

Cú pháp mới là một cải tiến tuyệt vời cho ngôn ngữ vì nó cho phép chúng tôi xây dựng mã dễ đọc và có thể duy trì hơn. Chúng tôi cũng có thể sử dụng tham số và các loại trả về, giá trị mặc định, danh sách đối số có độ dài thay đổi (hàm variadic), chúng tôi có thể vượt qua và trả về bằng tham chiếu, v.v. Cuối cùng, việc đóng ngắn cũng có thể được sử dụng trong các phương thức lớp và chúng có thể sử dụng Biến

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
2 giống như đóng cửa thường xuyên.

RFC này đã được phê duyệt với 51 đến 8 phiếu, vì vậy chúng tôi có thể hy vọng nó sẽ là một phần của bổ sung Php 7.4.

Nhà điều hành phân công Null Coalescing

Được thêm vào Php 7, toán tử Coalesce (

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
3) có ích khi chúng ta cần sử dụng toán tử ternary kết hợp với
array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
4. Nó trả về toán hạng đầu tiên nếu nó tồn tại và không phải là
array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
5. Nếu không, nó trả lại toán hạng thứ hai. Đây là một ví dụ:

$arr = [...$args];
7

Những gì mã này làm khá đơn giản: nó tìm thấy tham số yêu cầu và đặt giá trị mặc định nếu nó không tồn tại. Ý nghĩa của dòng đó là rõ ràng, nhưng nếu chúng ta có tên biến dài hơn nhiều như trong ví dụ này từ RFC thì sao?it fetches the request parameter and sets a default value if it doesn’t exist. The meaning of that line is clear, but what if we had much longer variable names as in this example from the RFC?

Bạn muốn biết làm thế nào chúng ta tăng lưu lượng truy cập trên 1000%?

Tham gia với hơn 20.000 người khác nhận được bản tin hàng tuần của chúng tôi với các mẹo nội bộ WordPress!

Theo dõi ngay

$arr = [...$args];
8

Về lâu dài, mã này có thể hơi khó duy trì. Vì vậy, nhằm mục đích giúp các nhà phát triển viết mã trực quan hơn, RFC này đề xuất giới thiệu nhà điều hành phân công liên kết Null (

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
6). Vì vậy, thay vì viết mã trước đó, chúng tôi có thể viết như sau:null coalescing assignment operator (
array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
6). So, instead of writing the previous code, we could write the following:

$arr = [...$args];
9

Nếu giá trị của tham số bên trái là

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
7, thì giá trị của tham số bên phải được sử dụng. Lưu ý rằng, trong khi nhà điều hành hợp tác là một nhà điều hành so sánh,
array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
6 là một nhà điều hành chuyển nhượng.
Note that, while the coalesce operator is a comparison operator,
array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
6 is an assignment operator.

Đề xuất này đã được phê duyệt với 37 đến 4 phiếu.

Thuộc tính gõ 2.0

Khai báo loại đối số hoặc gợi ý loại, cho phép chỉ định loại biến dự kiến ​​sẽ được truyền đến một hàm hoặc phương thức lớp. Loại gợi ý là một tính năng có sẵn kể từ Php 5 và vì Php 7.2, chúng tôi có thể sử dụng chúng với kiểu dữ liệu

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
9. Bây giờ Php 7.4 mang đến loại gợi ý một bước tiến bằng cách thêm hỗ trợ cho các khai báo loại thuộc tính hạng nhất. Đây là một ví dụ rất cơ bản:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
0

Tất cả các loại được hỗ trợ, ngoại trừ

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
0 và
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
1:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
1

RFC giải thích lý do tại sao

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
0 và
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
1 không được hỗ trợ:

Loại void không được hỗ trợ, vì nó không hữu ích và có ngữ nghĩa không rõ ràng.

Loại có thể gọi được không được hỗ trợ, bởi vì hành vi của nó phụ thuộc vào ngữ cảnh.

Vì vậy, chúng tôi có thể sử dụng một cách an toàn

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
4,
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
5,
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
6,
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
7,
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
8,
array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
9,
function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
0,
function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
1,
function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
2, bất kỳ tên lớp hoặc giao diện nào và các loại có thể điều chỉnh được (
function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
3).

Các loại có thể được sử dụng trên các thuộc tính tĩnh:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
2

Chúng cũng được phép với ký hiệu

function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
4:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
3

Nó có thể đặt các giá trị thuộc tính mặc định, tất nhiên phải khớp với loại thuộc tính được khai báo, nhưng chỉ các thuộc tính có thể vô hiệu hóa có thể có giá trị

array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
7 mặc định:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
4

Cùng loại áp dụng cho tất cả các thuộc tính trong một khai báo duy nhất:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
5

Điều gì xảy ra nếu chúng ta mắc lỗi trên loại tài sản? Xem xét mã sau:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
6

Trong mã trên, chúng tôi đã khai báo loại thuộc tính chuỗi, nhưng chúng tôi đặt một mảng làm giá trị thuộc tính. Trong kịch bản như vậy, chúng ta gặp phải lỗi gây tử vong sau:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
7

RFC này đã được phê duyệt với 70 đến 1 phiếu bầu.

Tài liệu tham khảo yếu

Với RFC này, PHP 7.4 giới thiệu lớp yếu, cho phép các lập trình viên giữ lại một tham chiếu đến một đối tượng không ngăn cản đối tượng bị phá hủy.

Hiện tại, PHP hỗ trợ các tài liệu tham khảo yếu bằng cách sử dụng mở rộng như PECL-WEAKREF. Dù sao, API mới khác với lớp

function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
6 được ghi lại.

Dưới đây là một ví dụ từ tác giả của đề xuất này, Nikita Popov:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
8

function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
7 đầu tiên in
function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
8, trong khi bản in
function buildArray(){
	return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
7 thứ hai
array(5) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(6) "orange"
	[2]=>
	string(5) "apple"
	[3]=>
	string(4) "pear"
	[4]=>
	string(10) "watermelon"
}
5, vì đối tượng được tham chiếu đã bị phá hủy.

Các slide cho buổi nói chuyện Php 7.4 của tôi tại #Phprussia2019. Là một hội nghị tuyệt vời! Https: //t.co/zlr9bj2akl

- Nikita Popov (@nikita_ppv) ngày 19 tháng 5 năm 2019

RFC này đã thông qua với 28 đến 5 phiếu.

Covariant Return và các thông số trái ngược

Phương sai là một thuộc tính của hệ thống phân cấp lớp mô tả cách các loại của một hàm tạo loại ảnh hưởng đến các phân nhóm. Nói chung, một hàm tạo loại có thể là:

  • Bất biến: Nếu loại của loại siêu hạn chế loại phân nhóm.: if the type of the super-type constrain the type of the subtype.
  • Covariant: Nếu thứ tự của các loại được bảo tồn (các loại được đặt hàng từ cụ thể hơn đến chung chung hơn).: if the ordering of types is preserved (types are ordered from more specific to more generic).
  • Contravariant: Nếu nó đảo ngược thứ tự (các loại được đặt hàng từ chung chung đến cụ thể hơn).: if it reverses the order (types are ordered from more generic to more specific).

Hiện tại, PHP chủ yếu có tham số bất biến và các loại trả về, với một vài ngoại lệ. RFC này đề xuất cho phép hiệp phương sai và trái ngược với các loại tham số và loại trả về, cũng cung cấp một số ví dụ về mã.

Dưới đây là một ví dụ về loại trở lại đồng biến:covariant return type:

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
9

Và đây là một ví dụ về loại tham số contravariant:contravariant parameter type:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
0

Xem RFC để xem xét kỹ hơn về hiệp phương sai và trái ngược trong Php 7.4.

RFC này đã vượt qua với 39 đến 1 phiếu bầu.

Tải trước

Đề xuất này từ Dmitry Stogov là một trong những yêu thích của chúng tôi bởi vì nó sẽ mang lại sự thúc đẩy đáng kể về hiệu suất. Tải trước là quá trình tải thư viện và khung vào opcache khi khởi tạo mô -đun (đọc thêm về vòng đời PHP).Preloading is the process of loading libraries and frameworks into the OPCache at module initialization (read more about PHP lifecycle).

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Php Lifecycle (Nguồn hình ảnh: bên trong PHP)

Dưới đây là cách tải trước hoạt động theo lời của Dmitry:

Khi khởi động máy chủ - trước khi bất kỳ mã ứng dụng nào được chạy - chúng tôi có thể tải một bộ tệp PHP nhất định vào bộ nhớ - và cung cấp nội dung của chúng có sẵn vĩnh viễn cho tất cả các yêu cầu tiếp theo sẽ được phục vụ bởi máy chủ đó. Tất cả các chức năng và các lớp được xác định trong các tệp này sẽ có sẵn cho các yêu cầu ra khỏi hộp, giống như các thực thể nội bộ.

Các tệp này được tải trên máy chủ khởi động, được thực thi trước bất kỳ ứng dụng nào và có sẵn cho bất kỳ yêu cầu nào trong tương lai. Điều đó tuyệt vời về mặt hiệu suất.

Tải trước được kiểm soát bởi Chỉ thị

array(6) {
	[0]=>
	string(3) "red"
	[1]=>
	string(5) "green"
	[2]=>
	string(4) "blue"
	[3]=>
	string(4) "pink"
	[4]=>
	string(6) "violet"
	[5]=>
	string(6) "yellow"
}
1 cụ thể:
array(6) {
	[0]=>
	string(3) "red"
	[1]=>
	string(5) "green"
	[2]=>
	string(4) "blue"
	[3]=>
	string(4) "pink"
	[4]=>
	string(6) "violet"
	[5]=>
	string(6) "yellow"
}
2. Chỉ thị này chỉ định một tập lệnh PHP được biên dịch và thực thi tại máy chủ khởi động. Tệp này có thể được sử dụng để tải trước các tệp bổ sung, bao gồm chúng hoặc thông qua hàm
array(6) {
	[0]=>
	string(3) "red"
	[1]=>
	string(5) "green"
	[2]=>
	string(4) "blue"
	[3]=>
	string(4) "pink"
	[4]=>
	string(6) "violet"
	[5]=>
	string(6) "yellow"
}
3 (đọc thêm trên tài liệu PHP).

Nhưng có một nhược điểm. Trên thực tế, RFC tuyên bố rõ ràng:

Các tệp được tải trước vẫn được lưu trong bộ nhớ Opcache mãi mãi. Việc sửa đổi các tệp nguồn tương ứng của họ đã giành được bất kỳ hiệu ứng nào mà không cần khởi động lại máy chủ khác.

Tuy nhiên, tất cả các chức năng được xác định trong các tệp được tải sẵn sẽ được tải vĩnh viễn vào chức năng PHP và các bảng lớp và vẫn có sẵn cho mọi yêu cầu trong tương lai. Điều này sẽ dẫn đến những cải tiến hiệu suất tốt, ngay cả khi những cải tiến này có thể thay đổi đáng kể.

Bạn có thể đọc thêm về các hạn chế và ngoại lệ của việc tải trước trên trang RFC tải trước chính thức.

Cơ chế tuần tự hóa đối tượng tùy chỉnh mới

Đây là một đề xuất khác từ Nikita Popov được phê duyệt với phần lớn số phiếu.

Hiện tại, chúng tôi có hai cơ chế khác nhau để tuần tự hóa các đối tượng trong PHP:

  • Phương pháp ma thuật
    array(6) {
    	[0]=>
    	string(3) "red"
    	[1]=>
    	string(5) "green"
    	[2]=>
    	string(4) "blue"
    	[3]=>
    	string(4) "pink"
    	[4]=>
    	string(6) "violet"
    	[5]=>
    	string(6) "yellow"
    }
    4 và
    array(6) {
    	[0]=>
    	string(3) "red"
    	[1]=>
    	string(5) "green"
    	[2]=>
    	string(4) "blue"
    	[3]=>
    	string(4) "pink"
    	[4]=>
    	string(6) "violet"
    	[5]=>
    	string(6) "yellow"
    }
    5
  • Giao diện
    array(6) {
    	[0]=>
    	string(3) "red"
    	[1]=>
    	string(5) "green"
    	[2]=>
    	string(4) "blue"
    	[3]=>
    	string(4) "pink"
    	[4]=>
    	string(6) "violet"
    	[5]=>
    	string(6) "yellow"
    }
    6

Theo Nikita, cả hai tùy chọn này đều có vấn đề dẫn đến mã phức tạp và không đáng tin cậy. Bạn có thể đi sâu vào chủ đề này trong RFC. Ở đây tôi chỉ đề cập rằng cơ chế tuần tự hóa mới sẽ ngăn chặn các vấn đề này bằng cách cung cấp hai phương pháp ma thuật mới,

array(6) {
	[0]=>
	string(3) "red"
	[1]=>
	string(5) "green"
	[2]=>
	string(4) "blue"
	[3]=>
	string(4) "pink"
	[4]=>
	string(6) "violet"
	[5]=>
	string(6) "yellow"
}
7 và
array(6) {
	[0]=>
	string(3) "red"
	[1]=>
	string(5) "green"
	[2]=>
	string(4) "blue"
	[3]=>
	string(4) "pink"
	[4]=>
	string(6) "violet"
	[5]=>
	string(6) "yellow"
}
8, kết hợp hai cơ chế hiện có.

Đề xuất này được thông qua với 20 đến 7 phiếu bầu.

Khấu hao

Các chức năng/chức năng sau đây sẽ không được dùng với Php 7.4. Để biết danh sách các khoản khấu hao toàn diện hơn, hãy xem Ghi chú nâng cấp PHP 7.4.

Thay đổi mức độ ưu tiên của toán tử nối

Hiện tại, trong php, các nhà khai thác số học của php+và và--và các nhà khai thác số học, và các trò chơi. Toán tử chuỗi được kết hợp trái và có cùng mức độ (đọc thêm về ưu tiên toán tử).

Ví dụ, hãy xem xét dòng sau:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
1

Trong Php 7.3, mã này tạo ra cảnh báo sau:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
2

Điều này bởi vì sự kết hợp được đánh giá từ trái sang phải. Nó giống như viết mã sau:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
3

RFC này đề xuất thay đổi mức độ ưu tiên của các nhà khai thác, đưa ra. Ưu tiên thấp hơn so với các toán tử+và và các toán tử, do đó, các phép bổ sung và phép trừ sẽ luôn được thực hiện trước khi kết hợp chuỗi. Dòng mã đó phải tương đương với các điều sau:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
4

Đây là một đề xuất hai bước:

  • Bắt đầu từ phiên bản 7.4, PHP sẽ phát ra thông báo không nhận được khi gặp phải biểu thức chưa được khám phá với các chương trình++, và và.
  • Sự thay đổi thực tế của sự ưu tiên của các toán tử này nên được thêm vào với PHP 8.

Cả hai đề xuất đã được phê duyệt với phần lớn phiếu bầu.

Khởi hành toán tử ternary liên kết trái

Trong PHP, toán tử ternary, không giống như nhiều ngôn ngữ khác, là liên kết trái. Theo Nikita Popof, điều này có thể gây nhầm lẫn cho các lập trình viên chuyển đổi giữa các ngôn ngữ khác nhau.

Hiện tại, trong PHP, mã sau là chính xác:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
5

Nó được giải thích là:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
6

Và điều này có thể dẫn đến lỗi vì nó có thể không phải là những gì chúng ta dự định làm. Vì vậy, RFC này đề xuất từ ​​chối và loại bỏ việc sử dụng tính liên kết trái cho các nhà khai thác ternary và các nhà phát triển lực lượng sử dụng dấu ngoặc đơn.

Đây là một đề xuất hai bước khác:

  • Bắt đầu từ Php 7.4, các ternaries lồng nhau mà không sử dụng rõ ràng dấu ngoặc đơn sẽ đưa ra cảnh báo phản đối.
  • Bắt đầu từ Php 8.0, sẽ có lỗi thời gian chạy biên dịch.

Đề xuất này đã được phê duyệt với 35 đến 10 phiếu.

Php 7.4 có nghĩa là gì đối với người dùng WordPress?

PHP là ngôn ngữ lập trình phía máy chủ được sử dụng rộng rãi nhất trên web. Theo W3Techs, tính đến ngày 2 tháng 12 năm 2019, việc sử dụng PHP được sử dụng bởi 78,9% của tất cả các trang web có ngôn ngữ lập trình phía máy chủ mà họ có thể phát hiện.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Sử dụng PHP (tháng 12 năm 2019)

Thật không may, PHP 5 vẫn được sử dụng bởi 44,0% tất cả các trang web có ngôn ngữ lập trình phía máy chủ đã biết. Nếu bạn thêm số lượng người dùng vẫn sử dụng Php 7.0 và 7.1, thì hóa ra phần lớn các trang web đang chạy các phiên bản PHP không được hỗ trợ.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Các phiên bản PHP được hỗ trợ (Nguồn hình ảnh: Phiên bản được hỗ trợ)

Theo trang chính thức & NBSP; WordPress, khi viết bài này, một số lượng lớn 64% của tất cả các trang web WordPress đang chạy các phiên bản không được hỗ trợ của PHP. Chỉ có hơn 13% một chút đang sử dụng Php 7.3. Và phiên bản mới nhất, Php 7.4, thậm chí còn xuất hiện. Bạn có thể thấy rằng phần lớn người dùng, trên 23%, vẫn đang chạy trên PHP 5.6.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Chỉ số phiên bản Php WordPress

Chúng tôi khuyên bạn nên yêu cầu máy chủ của bạn cho phiên bản PHP được hỗ trợ, tốt nhất là theo yêu cầu chính thức của WordPress. Theo văn bản này, tháng 5 năm 2019, WordPress yêu cầu:

  • Php phiên bản 7.3 trở lên.
  • MySQL phiên bản 5.6 trở lên hoặc Mariadb phiên bản 10.1 trở lên.
  • Hỗ trợ HTTPS

Hiệu suất Php 7

Các số trên đặc biệt không khuyến khích đến từ quan điểm hiệu suất, như Php 7 đã cho thấy là & nbsp; nhanh hơn đáng kể. Dưới đây là một vài chỉ số:

  • Php & nbsp; điểm chuẩn & nbsp; cho thấy PHP 7 cho phép hệ thống thực hiện gấp đôi số yêu cầu mỗi giây so với PHP 5.6, ở gần một nửa độ trễ.
  • Christian Vigh cũng đã xuất bản A & NBSP; PHP Performance So sánh & NBSP; trong đó ông thấy rằng & NBSP; Php 5.2 chậm hơn 400% so với Php 7.
  • Andrei Avram đã thấy thời gian thực hiện nhanh hơn và ít sử dụng bộ nhớ trong Php 7.4 câu của Php 7.3
  • Phoronix đã thực hiện một số bài kiểm tra điểm chuẩn sớm với Php 7.4 alpha và thấy rằng nó nhanh hơn một chút so với Php 7.3.

Đã nâng cấp trang web @kinsta của tôi lên PHP 7.4 và nó giống như nhanh hơn 10 lần. Woot!

- Ronald Huereca (@ronaldhuereca) ngày 2 tháng 12 năm 2019

Chúng tôi đã chạy các điểm chuẩn hiệu suất PHP của riêng mình với Php 7.3. Chúng tôi đã thấy rằng WordPress 5.0 trên PHP 7.3 có thể thực hiện gần gấp ba lần so với nhiều giao dịch (yêu cầu) mỗi giây so với Php 5.6. Chúng tôi sẽ sớm phát hành điểm chuẩn Php 7.4!We’ll be releasing PHP 7.4 benchmarks soon!

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Điểm chuẩn của WordPress 5.0 PHP
  • WordPress 5.0 Php 5.6 Điểm chuẩn: 91,64 Req/giây
  • WordPress 5.0 Php 7.0 Kết quả điểm chuẩn: 206.71 Req/giây
  • WordPress 5.0 Php 7.1 Kết quả điểm chuẩn: 210,98 REQ/SEC
  • WordPress 5.0 & nbsp; Php 7.2 Kết quả điểm chuẩn: 229,18 & nbsp; req/sec & nbsp; 
  • WordPress 5.0 & nbsp; Php 7.3 Kết quả điểm chuẩn: 253.20 Req/giây & nbsp; 🏆 🏆PHP 7.3 benchmark results: 253.20 req/sec 🏆

Nhiều người chậm cập nhật đơn giản chỉ vì thời gian liên quan đến việc kiểm tra mới tất cả các plugin và chủ đề của bên thứ ba của họ để đảm bảo chúng hoạt động đúng. .

Kiểm tra phiên bản PHP của bạn

Không chắc bạn đang chạy phiên bản PHP nào? Một trong những cách dễ nhất để kiểm tra là sử dụng một công cụ như & nbsp; pingdom & nbsp; hoặc google chrome devtools. Tiêu đề yêu cầu HTTP đầu tiên & NBSP; thường sẽ hiển thị cho bạn phiên bản.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Kiểm tra phiên bản PHP trong pingdom

Điều này phụ thuộc vào máy chủ không sửa đổi giá trị tiêu đề & nbsp; ____ 79. Tuy nhiên, nhiều người làm vì lý do bảo mật (bao gồm cả Kinsta). Nếu vậy, bạn có thể không thấy phiên bản PHP của bạn. Trong trường hợp đó, nếu bạn đang chạy WordPress 5.2 trở lên, có một công cụ sức khỏe trang web mới mà bạn có thể sử dụng. Truy cập vào các công cụ của người dùng trên mạng → Trang web Sức khỏe Trang web → Thông tin trực tuyến và trong phần máy chủ của bạn, bạn sẽ tìm thấy phiên bản PHP máy chủ của bạn.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Kiểm tra phiên bản PHP với công cụ sức khỏe trang web WordPress

Ngoài ra, bạn có thể cài đặt một plugin miễn phí như thông tin phiên bản sẽ hiển thị cho bạn một số thông tin máy chủ cơ bản trong phần chân trang của bảng điều khiển quản trị viên WordPress của bạn. Một vài cách khác để xem phiên bản PHP của bạn bao gồm tải lên tệp qua FTP hoặc chỉ đơn giản là liên hệ với máy chủ của bạn và hỏi.

Cập nhật lên Php 7.4

Phiên bản cuối cùng của Php 7.4 hiện có sẵn tại Kinsta. & NBSP; Ngoài ra, bạn có thể kiểm tra trang web WordPress của mình cục bộ & NBSP; hoặc kiểm tra các tập lệnh của bạn trong một môi trường như & nbsp; Docker, cho phép bạn kiểm tra các phiên bản PHP khác nhau từ dòng lệnh. Alternatively, you could test your WordPress site locally or check your scripts in an environment like Docker, which allows you to test different versions of PHP from the command line.

Cách dễ nhất để bắt đầu thử nghiệm là & nbsp; tạo môi trường dàn dựng & nbsp; vì điều này sẽ giống với trang web sản xuất trực tiếp của bạn. Trong bảng điều khiển Mykinsta, nhấp vào trang web của bạn và thay đổi môi trường thành dàn.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Tạo môi trường dàn WordPress

Sau đó, trong menu Công cụ trực tuyến, thay đổi công cụ PHP của bạn thành Php 7.4. Sau đó, bạn có thể bắt đầu kiểm tra để đảm bảo khả năng tương thích của mã, các plugin của bên thứ ba và chủ đề.

Như với các phiên bản trước của PHP, tính năng PHP tự phục hồi của chúng tôi hỗ trợ đầy đủ PHP 7.4. Nếu PHP đi xuống vì bất kỳ lý do gì, chúng tôi sẽ tự động khởi động lại nó. Nếu khởi động lại không khắc phục sự cố, hệ thống giám sát của chúng tôi sẽ cảnh báo nhóm Sysadmin của chúng tôi để điều tra nguyên nhân của vấn đề.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Thay đổi thành Php 7.4

Xem chi tiết liên quan đến phát hành Php 7.4 tại Kinsta.

Cài đặt và chạy Php 7.4 trên Docker

Bạn muốn kiểm tra trên Docker? & NBSP; May mắn thay, bạn không cần phải biên dịch và định cấu hình Php 7.4 theo cách thủ công. Nếu bạn đã cài đặt Docker trên hệ thống của mình, bạn chỉ cần cài đặt hình ảnh docker PHP-FPM 7.4 không chính thức và chạy các thử nghiệm của bạn từ dòng lệnh trong vài giây.

Hướng dẫn what does php 7.4 mean? - php 7.4 nghĩa là gì?
Cài đặt hình ảnh nginx docker

Nếu bạn thích chạy mã PHP 7.4 của mình trong trình duyệt, bạn cũng cần cài đặt hình ảnh nginx hoặc Apache. Nhưng không phải lo lắng. Chỉ cần làm theo hướng dẫn của nhà phát triển. Sao chép và dán các lệnh từ trang hình ảnh Docker vào công cụ dòng lệnh của bạn và bạn đã sẵn sàng để đi.

Php 7.4 là bản phát hành nhỏ mới nhất giúp PHP nhanh hơn và đáng tin cậy hơn. 🚀SCECK OUT DEEP ĐÀO TẠO CỦA CHÚNG TÔI vào các tính năng mới! Nhấp để tweetClick to Tweet

Bản tóm tắt

Trong bài đăng này, chúng tôi đã đề cập đến một số lượng tốt các thay đổi và bổ sung mà chúng tôi có thể mong đợi với việc phát hành Php 7.4. Nếu bạn đang tìm kiếm danh sách đầy đủ các tính năng, cùng với tài liệu chính thức của RFC, hãy xem các tài nguyên sau:

  • Php 7.4 yêu cầu nhận xét
  • Ghi chú nâng cấp Php 7.4
  • Php 7.4 Nhiệm vụ chuẩn bị

Chúng tôi sẽ cập nhật cho bạn tất cả các thông tin mới nhất liên quan đến Php 7.4. Nếu bạn là khách hàng Kinsta, bạn đã có thể bắt đầu chuyển các trang web WordPress của mình sang phiên bản mới nhất.

Bạn đã sẵn sàng để cài đặt và kiểm tra các tính năng PHP sắp tới chưa? cái nào là sở thích của bạn? Chia sẻ suy nghĩ của bạn với chúng tôi trong các ý kiến ​​dưới đây.


Tiết kiệm thời gian, chi phí và tối đa hóa hiệu suất trang web với:

  • Trợ giúp ngay lập tức từ các chuyên gia lưu trữ WordPress, 24/7.
  • Tích hợp doanh nghiệp CloudFlare.
  • Khán giả toàn cầu với 35 trung tâm dữ liệu trên toàn thế giới.
  • Tối ưu hóa với giám sát hiệu suất ứng dụng tích hợp của chúng tôi.

Tất cả điều đó và nhiều hơn nữa, trong một kế hoạch không có hợp đồng dài hạn, di cư hỗ trợ và một người được bảo đảm trong 30 ngày. Kiểm tra các kế hoạch của chúng tôi hoặc nói chuyện với bán hàng để tìm kế hoạch phù hợp với bạn.

Php 7.4 làm gì?

Với RFC này, PHP 7.4 giới thiệu lớp yếu, cho phép các lập trình viên giữ lại một tham chiếu đến một đối tượng không ngăn chặn đối tượng bị phá hủy.Hiện tại, PHP hỗ trợ các tài liệu tham khảo yếu bằng cách sử dụng mở rộng như PECL-WEAKREF.allows programmers to retain a reference to an object that doesn't prevent the object itself from being destroyed. Currently, PHP supports Weak References by using an extention like pecl-weakref.

Php 7.4 có phải là kết thúc của cuộc đời không?

Php 7.4 Kết thúc cuộc đời Ngày kết thúc cuộc đời Ngày 7.4 là ngày 28 tháng 11 năm 2022.November 28, 2022.

Php 7.4 có an toàn không?

Php 7.4 kết thúc cuộc sống (EOL) vào ngày 28 tháng 11 năm 2022 có nghĩa là các lỗ hổng bảo mật đã biết sẽ không còn được sửa chữa và các trang web được tiếp xúc với các lỗ hổng bảo mật đáng kể.Điều quan trọng là cập nhật chúng lên một phiên bản mới hơn.Chúng tôi khuyên bạn nên cập nhật cho một trong hai: 8.0 được hỗ trợ cho đến ngày 26 tháng 11 năm 2023. meaning known security flaws will no longer be fixed and sites are exposed to significant security vulnerabilities. It is important to update them to a newer version. We would recommend updating to either: 8.0 supported until 26 November 2023.

Sự khác biệt giữa PHP 7.4 và 8 là gì?

Sự khác biệt giữa PHP 7.4 và 8 là gì?Trả lời: Một trong nhiều ví dụ là, WordPress trên Php 8.0 có thể xử lý nhiều yêu cầu hơn 18,4% mỗi giây so với Php 7.4.Hơn nữa, Laravel trên PHP 8.0 có thể chạy thêm 8,5% yêu cầu mỗi giây so với Php 7.3.WordPress on PHP 8.0 can handle 18.4% more requests per second than PHP 7.4. Moreover, Laravel on PHP 8.0 can run 8.5% more requests per second than PHP 7.3.