Hướng dẫn is php backwards compatible? - php có tương thích ngược không?

Thay đổi về lỗi và xử lý ngoại lệ

Nhiều lỗi gây tử vong và có thể phục hồi đã được chuyển đổi thành các trường hợp ngoại lệ trong PHP 7. Các ngoại lệ lỗi này được kế thừa từ lớp lỗi, chính nó thực hiện giao diện có thể ném (giao diện cơ sở mới tất cả các ngoại lệ kế thừa).Error class, which itself implements the Throwable interface (the new base interface all exceptions inherit).

Điều này có nghĩa là các trình xử lý lỗi tùy chỉnh có thể không còn được kích hoạt vì các ngoại lệ có thể được ném thay vào đó (gây ra lỗi gây tử vong mới cho các ngoại lệ lỗi không bị bắt).Error exceptions).

Một mô tả đầy đủ hơn về cách thức hoạt động của các lỗi trong Php 7 có thể được tìm thấy trên trang Lỗi Php 7. Hướng dẫn di chuyển này sẽ chỉ liệt kê những thay đổi ảnh hưởng đến khả năng tương thích ngược.

set_exception_handler () không còn được đảm bảo để nhận các đối tượng ngoại lệ is no longer guaranteed to receive Exception objects

Mã thực hiện một trình xử lý ngoại lệ được đăng ký với set_exception_handler () bằng cách sử dụng khai báo loại ngoại lệ sẽ gây ra lỗi nghiêm trọng khi ném đối tượng lỗi.set_exception_handler() using a type declaration of Exception will cause a fatal error when an Error object is thrown.

Nếu trình xử lý cần làm việc trên cả Php 5 và 7, bạn nên xóa khai báo loại khỏi trình xử lý, trong khi mã đang được di chuyển để hoạt động trên PHP 7 chỉ có thể thay thế chỉ có thể thay thế khai báo loại ngoại lệ bằng ném.Exception type declaration with Throwable instead.

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
5

Các nhà xây dựng nội bộ luôn ném các ngoại lệ vào thất bại

Trước đây, một số lớp bên trong sẽ trả về

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
6 hoặc một đối tượng không thể sử dụng khi hàm tạo không thành công. Tất cả các lớp nội bộ bây giờ sẽ ném một ngoại lệ trong trường hợp này giống như cách mà các lớp người dùng đã phải có.
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
6
or an unusable object when the constructor failed. All internal classes will now throw an Exception in this case in the same way that user classes already had to.

Lỗi phân tích cú pháp ném parseerrorParseError

Lỗi phân tích cú pháp bây giờ ném một đối tượng parseerror. Xử lý lỗi cho eval () bây giờ sẽ bao gồm một khối

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
7 có thể xử lý lỗi này.ParseError object. Error handling for eval() should now include a
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
7 block that can handle this error.

E_strict thông báo thay đổi mức độ nghiêm trọng

Tất cả các thông báo

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
8 đã được phân loại lại ở các cấp độ khác. Hằng số
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
8 được giữ lại, do đó, các cuộc gọi như
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
0 sẽ không gây ra lỗi.
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
8
notices have been reclassified to other levels.
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
8
constant is retained, so calls like
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
0 will not cause an error.

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
8 Thông báo thay đổi mức độ nghiêm trọng
notices severity changes
Tình hìnhCấp độ/Hành vi mới
Lập chỉ mục bởi một tài nguyên
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
2
Phương pháp tĩnh trừu tượngThông báo bị xóa, kích hoạt không có lỗi
"Xác định lại" một người xây dựngThông báo bị xóa, kích hoạt không có lỗi
"Xác định lại" một người xây dựng
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
3
Chữ ký không phù hợp trong quá trình thừa kếThông báo bị xóa, kích hoạt không có lỗi
"Xác định lại" một người xây dựng
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
2
Chữ ký không phù hợp trong quá trình thừa kế
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
2
Thuộc tính tương tự (tương thích) trong hai đặc điểm được sử dụng
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
2
Truy cập thuộc tính tĩnh không tĩnh
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
7

Chỉ các biến nên được gán bằng tham chiếu

Chỉ các biến phải được truyền bằng tham chiếu

Gọi các phương pháp phi tĩnh một cách thống trị

Thay đổi để xử lý biến

Php 7 hiện sử dụng cây cú pháp trừu tượng khi phân tích các tệp nguồn. Điều này đã cho phép nhiều cải tiến đối với ngôn ngữ mà trước đây không thể do giới hạn trong trình phân tích cú pháp được sử dụng trong các phiên bản PHP trước đó, nhưng đã dẫn đến việc loại bỏ một vài trường hợp đặc biệt vì lý do nhất quán, dẫn đến việc phá vỡ khả năng tương thích ngược. Những trường hợp này được chi tiết trong phần này.
Thay đổi trong việc xử lý các biến, thuộc tính và phương pháp gián tiếp Truy cập gián tiếp vào các biến, thuộc tính và phương thức hiện sẽ được đánh giá nghiêm ngặt theo thứ tự từ trái sang phải, trái ngược với sự kết hợp trước đây của các trường hợp đặc biệt. Bảng dưới đây cho thấy thứ tự đánh giá đã thay đổi như thế nào.Đánh giá cũ và mới về biểu thức gián tiếp
Biểu hiệnPhp 5 giải thíchPhp 7 giải thích
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
8
array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
9
array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
0
array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
1
array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
2
array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
3
array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
4
array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
5
array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
6

array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
7

array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
8

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
1

array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
9list() handling

Mã sử ​​dụng thứ tự đánh giá từ phải sang trái cũ phải được viết lại để sử dụng rõ ràng thứ tự đánh giá đó với niềng răng xoăn (xem cột giữa trên). Điều này sẽ làm cho mã cả hai chuyển tiếp tương thích với PHP 7.x và tương thích ngược với PHP 5.x. no longer assigns variables in reverse order

Điều này cũng ảnh hưởng đến từ khóa

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
0. Cú pháp nẹp xoăn có thể được sử dụng để mô phỏng hành vi trước đó nếu được yêu cầu: will now assign values to variables in the order they are defined, rather than reverse order. In general, this only affects the case where list() is being used in conjunction with the array
Notice: Only variables should be passed by reference in /tmp/test.php on line 13
2 operator, as shown below:

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
3

Thay đổi trong danh sách () xử lý

Danh sách () không còn gán các biến theo thứ tự ngược lại

Danh sách () bây giờ sẽ gán các giá trị cho các biến theo thứ tự chúng được xác định, thay vì thứ tự đảo ngược. Nói chung, điều này chỉ ảnh hưởng đến trường hợp Danh sách () đang được sử dụng cùng với toán tử

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
2 mảng, như được hiển thị bên dưới:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

Đầu ra của ví dụ trên trong Php 5:list() assignments occur, as this is an implementation detail that may change again in the future.

array(3) {
  [0]=>
  int(3)
  [1]=>
  int(2)
  [2]=>
  int(1)
}
list() assignments have been removed

Đầu ra của ví dụ trên trong Php 7: constructs can no longer be empty. The following are no longer allowed:

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
4

Nói chung, nên không nên dựa vào thứ tự mà các bài tập trong danh sách () xảy ra, vì đây là một chi tiết triển khai có thể thay đổi trở lại trong tương lai.

Danh sách trống () Bài tập đã bị xóa

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
5

Đầu ra của ví dụ trên trong Php 5:

array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}

Đầu ra của ví dụ trên trong Php 7:

array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}

Ngoặc đơn xung quanh các đối số chức năng không còn ảnh hưởng đến hành vi

Trong Php 5, sử dụng dấu ngoặc đơn dư thừa xung quanh một đối số chức năng có thể làm yên tĩnh các cảnh báo tiêu chuẩn nghiêm ngặt khi đối số hàm được truyền qua tham chiếu. Cảnh báo bây giờ sẽ luôn được ban hành.

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
6

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
7

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
8

Ví dụ trên sẽ xuất ra:

Notice: Only variables should be passed by reference in /tmp/test.php on line 13

Thay đổi cho foreach

Những thay đổi nhỏ đã được thực hiện đối với hành vi của cấu trúc điều khiển foreach, chủ yếu xung quanh việc xử lý con trỏ mảng bên trong và sửa đổi mảng được lặp lại.

foreach không còn thay đổi con trỏ mảng bên trong

Trước PHP 7, con trỏ mảng bên trong đã được sửa đổi trong khi một mảng đã được lặp lại với foreach. Điều này không còn là trường hợp, như được hiển thị trong ví dụ sau:

Notice: Only variables should be passed by reference in /tmp/test.php on line 13
9

Đầu ra của ví dụ trên trong Php 5:

int(1)
int(2)
bool(false)

Đầu ra của ví dụ trên trong Php 7:

Ngoặc đơn xung quanh các đối số chức năng không còn ảnh hưởng đến hành vi

Trong Php 5, sử dụng dấu ngoặc đơn dư thừa xung quanh một đối số chức năng có thể làm yên tĩnh các cảnh báo tiêu chuẩn nghiêm ngặt khi đối số hàm được truyền qua tham chiếu. Cảnh báo bây giờ sẽ luôn được ban hành.

Ví dụ trên sẽ xuất ra:

Thay đổi cho foreach

int(1)
int(2)
bool(false)
0

Đầu ra của ví dụ trên trong Php 5:

Đầu ra của ví dụ trên trong Php 7:

Ngoặc đơn xung quanh các đối số chức năng không còn ảnh hưởng đến hành viint handling

Trong Php 5, sử dụng dấu ngoặc đơn dư thừa xung quanh một đối số chức năng có thể làm yên tĩnh các cảnh báo tiêu chuẩn nghiêm ngặt khi đối số hàm được truyền qua tham chiếu. Cảnh báo bây giờ sẽ luôn được ban hành.

Ví dụ trên sẽ xuất ra:

Thay đổi cho foreach

Những thay đổi nhỏ đã được thực hiện đối với hành vi của cấu trúc điều khiển foreach, chủ yếu xung quanh việc xử lý con trỏ mảng bên trong và sửa đổi mảng được lặp lại.ArithmeticError:

int(1)
int(2)
bool(false)
3

Đầu ra của ví dụ trên trong Php 5:

Đầu ra của ví dụ trên trong Php 7:

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
Stack trace:
#0 {main}
  thrown in /tmp/test.php on line 2

Ngoặc đơn xung quanh các đối số chức năng không còn ảnh hưởng đến hành vi

Trong Php 5, sử dụng dấu ngoặc đơn dư thừa xung quanh một đối số chức năng có thể làm yên tĩnh các cảnh báo tiêu chuẩn nghiêm ngặt khi đối số hàm được truyền qua tham chiếu. Cảnh báo bây giờ sẽ luôn được ban hành.int will always result in 0. Previously, the behaviour of such shifts was architecture dependent.

Ví dụ trên sẽ xuất ra:

Thay đổi cho foreach

int(1)
int(2)
bool(false)
4 would be returned. Now, the divide operator returns a float as either +INF, -INF, or NAN, as specified by IEEE 754. The modulus operator E_WARNING has been removed and will throw a DivisionByZeroError exception.

int(1)
int(2)
bool(false)
5

Đầu ra của ví dụ trên trong Php 5:

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Đầu ra của ví dụ trên trong Php 7:

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d

Ngoặc đơn xung quanh các đối số chức năng không còn ảnh hưởng đến hành vistring handling

Trong Php 5, sử dụng dấu ngoặc đơn dư thừa xung quanh một đối số chức năng có thể làm yên tĩnh các cảnh báo tiêu chuẩn nghiêm ngặt khi đối số hàm được truyền qua tham chiếu. Cảnh báo bây giờ sẽ luôn được ban hành.

Ví dụ trên sẽ xuất ra:

int(1)
int(2)
bool(false)
6

Đầu ra của ví dụ trên trong Php 5:

bool(true)
bool(true)
int(15)
string(2) "oo"

Đầu ra của ví dụ trên trong Php 7:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
0

Ngoặc đơn xung quanh các đối số chức năng không còn ảnh hưởng đến hành vi can be used to check if a string contains a hexadecimal number, and also to convert a string of that type to an int:

int(1)
int(2)
bool(false)
7

Trong Php 5, sử dụng dấu ngoặc đơn dư thừa xung quanh một đối số chức năng có thể làm yên tĩnh các cảnh báo tiêu chuẩn nghiêm ngặt khi đối số hàm được truyền qua tham chiếu. Cảnh báo bây giờ sẽ luôn được ban hành.

Ví dụ trên sẽ xuất ra:

Thay đổi cho foreach

Những thay đổi nhỏ đã được thực hiện đối với hành vi của cấu trúc điều khiển foreach, chủ yếu xung quanh việc xử lý con trỏ mảng bên trong và sửa đổi mảng được lặp lại.

foreach không còn thay đổi con trỏ mảng bên trong

Trước PHP 7, con trỏ mảng bên trong đã được sửa đổi trong khi một mảng đã được lặp lại với foreach. Điều này không còn là trường hợp, như được hiển thị trong ví dụ sau:

giá trị của foreach hoạt động trên một bản sao của mảngmcrypt_generic_end() function has been removed in favour of mcrypt_generic_deinit().

Khi được sử dụng trong chế độ giá trị mặc định, Foreach hiện sẽ hoạt động trên một bản sao của mảng được lặp lại thay vì chính mảng. Điều này có nghĩa là những thay đổi đối với mảng được thực hiện trong quá trình lặp sẽ không ảnh hưởng đến các giá trị được lặp lại.mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() functions have been removed in favour of using mcrypt_decrypt() with the appropriate

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
Stack trace:
#0 {main}
  thrown in /tmp/test.php on line 2
1 constant.

set_magic_quotes_runtime()

tham chiếu phụ của foreach có hành vi lặp được cải thiện, along with its alias magic_quotes_runtime(), have been removed. They were deprecated in PHP 5.3.0, and became effectively non-functional with the removal of magic quotes in PHP 5.4.0.

set_socket_blocking()

Khi lặp lại tham chiếu phụ, Foreach giờ đây sẽ thực hiện tốt hơn việc theo dõi các thay đổi đối với mảng được thực hiện trong quá trình lặp. Ví dụ: nối vào một mảng trong khi lặp đi lặp lại bây giờ cũng sẽ dẫn đến các giá trị được nối thêm được lặp lại:set_socket_blocking() alias has been removed in favour of stream_set_blocking().

Thay đổi trong việc xử lý INT in PHP-FPM

Biết chữ octal không hợp lệ can no longer be used in PHP-FPM. It remains functional in the CLI and embed SAPIs.

Trước đây, các chữ octal có chứa các số không hợp lệ bị cắt ngắn (
int(1)
int(2)
bool(false)
1 được lấy là
int(1)
int(2)
bool(false)
2). Bây giờ, một nghĩa đen octal không hợp lệ sẽ gây ra lỗi phân tích cú pháp.

Bitshifts tiêu cực

  • imagepsbbox()
  • imagepsencodefont()
  • imagepsextendfont()
  • imagepsfreefont()
  • imagepsloadfont()
  • imagepsslantfont()
  • imagepstext()

Bitwise thay đổi theo số âm bây giờ sẽ ném ArithMeticError:

Đã loại bỏ chỉ thị Ini

Đã loại bỏ các tính năng

Các chỉ thị INI sau đây đã bị xóa vì các tính năng liên quan của chúng cũng đã bị xóa:

  • Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
    Stack trace:
    #0 {main}
      thrown in /tmp/test.php on line 2
    
    2
  • Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
    Stack trace:
    #0 {main}
      thrown in /tmp/test.php on line 2
    
    3

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
Stack trace:
#0 {main}
  thrown in /tmp/test.php on line 2
4

Chỉ thị

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
Stack trace:
#0 {main}
  thrown in /tmp/test.php on line 2
4 đã bị xóa. Thay vào đó, phương thức XSLTProcessor :: SetSecurityPrefs () nên được gọi để kiểm soát các tùy chọn bảo mật trên cơ sở mỗi xử lý.XsltProcessor::setSecurityPrefs() method should be called to control the security preferences on a per-processor basis.

Những thay đổi khác không tương thích khác

Các đối tượng mới không thể được gán bằng tham chiếu

Kết quả của câu lệnh

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
Stack trace:
#0 {main}
  thrown in /tmp/test.php on line 2
6 không còn có thể được gán cho một biến bằng cách tham khảo:

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
Stack trace:
#0 {main}
  thrown in /tmp/test.php on line 2
7

Đầu ra của ví dụ trên trong Php 5:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
1

Đầu ra của ví dụ trên trong Php 7:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
2

Tên lớp, giao diện và đặc điểm không hợp lệ

Các tên sau không thể được sử dụng để đặt tên cho các lớp, giao diện hoặc đặc điểm:

  • bool
  • int
  • float
  • sợi dây
  • array(3) {
      [0]=>
      int(1)
      [1]=>
      int(2)
      [2]=>
      int(3)
    }
    
    6
  • Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
    Stack trace:
    #0 {main}
      thrown in /tmp/test.php on line 2
    
    9
  • int(1)
    int(2)
    bool(false)
    
    4

Hơn nữa, các tên sau không nên được sử dụng. Mặc dù chúng sẽ không tạo ra lỗi trong Php 7.0, nhưng chúng được dành cho việc sử dụng trong tương lai và nên được coi là không dùng nữa.

  • nguồn
  • sự vật
  • Trộn
  • số

Các cuộc gọi từ bối cảnh không tương thích bị xóa

Trước đây không được dùng trong Php 5.6, các cuộc gọi tĩnh được thực hiện theo phương thức không tĩnh với bối cảnh không tương thích giờ đây sẽ dẫn đến phương thức được gọi là biến

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
1 không xác định và cảnh báo không dùng sẽ được đưa ra.

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
2

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
3

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
4

Đầu ra của ví dụ trên trong Php 5.6:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
3

Đầu ra của ví dụ trên trong Php 7:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
4

Tên lớp, giao diện và đặc điểm không hợp lệ

Các tên sau không thể được sử dụng để đặt tên cho các lớp, giao diện hoặc đặc điểm:

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
7

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
8

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
9

bool

sợi dây

Hơn nữa, các tên sau không nên được sử dụng. Mặc dù chúng sẽ không tạo ra lỗi trong Php 7.0, nhưng chúng được dành cho việc sử dụng trong tương lai và nên được coi là không dùng nữa.

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d
0:

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d
1

nguồn

sự vật, func_get_args(), debug_backtrace() and exception backtraces will no longer report the original value that was passed to a parameter, but will instead provide the current value (which might have been modified).

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d
2

Đầu ra của ví dụ trên trong Php 5:

Đầu ra của ví dụ trên trong Php 7:

Tên lớp, giao diện và đặc điểm không hợp lệ

Các tên sau không thể được sử dụng để đặt tên cho các lớp, giao diện hoặc đặc điểm:

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d
0:

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d
4

bool

sợi dây

Hơn nữa, các tên sau không nên được sử dụng. Mặc dù chúng sẽ không tạo ra lỗi trong Php 7.0, nhưng chúng được dành cho việc sử dụng trong tương lai và nên được coi là không dùng nữa.

nguồn

sự vật

Trộn

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
6 will be returned.

số

Các cuộc gọi từ bối cảnh không tương thích bị xóa

int(1)
int(2)
bool(false)
4 or
bool(true)
bool(true)
int(15)
string(2) "oo"
5 will be fatal errors. If any value from these functions other than a boolean,
bool(true)
bool(true)
int(15)
string(2) "oo"
5, or
bool(true)
bool(true)
int(15)
string(2) "oo"
7 is returned, then it will fail and an E_WARNING will be emitted.

Trước đây không được dùng trong Php 5.6, các cuộc gọi tĩnh được thực hiện theo phương thức không tĩnh với bối cảnh không tương thích giờ đây sẽ dẫn đến phương thức được gọi là biến
Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
1 không xác định và cảnh báo không dùng sẽ được đưa ra.

Đầu ra của ví dụ trên trong Php 5.6:

Năng suất bây giờ là một nhà điều hành liên kết đúng:

Cấu trúc sản lượng không còn yêu cầu dấu ngoặc đơn và đã được thay đổi thành một toán tử kết hợp đúng với quyền ưu tiên giữa

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
5 và
Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)
6. Điều này có thể dẫn đến hành vi thay đổi:

Dây ngoặc đơn có thể được sử dụng để phân loại các trường hợp đó.

Các chức năng không thể có nhiều tham số có cùng tên

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d
0.

Không còn có thể xác định hai hoặc nhiều tham số chức năng có cùng tên. Ví dụ: hàm sau sẽ kích hoạt
Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d
0:

Chức năng Kiểm tra đối số Báo cáo giá trị tham số hiện tạiextension_loaded(); use function_exists() instead. Furthermore, Mhash is no longer reported by get_loaded_extensions() and related features.

declare(ticks)

Chỉ thị khai báo (Ticks) không còn rò rỉ vào các đơn vị biên dịch khác nhau.

tôi tại fquff dot io ¶

6 năm trước

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
02

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
03

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
04

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
05

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
06

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
07

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
08

Mossy2100 ¶

6 năm trước

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
09

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
10

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
11

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
12

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
08

Mossy2100 ¶

6 năm trước

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
14

Mossy2100 ¶

tuxedobob ¶

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
15

tkondrashov tại gmail dot com ¶

6 năm trước

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
16

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
17

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
18

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
19

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
20

Mossy2100 ¶

6 năm trước

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
21

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
22

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
23

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
08

Mossy2100 ¶

6 năm trước

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
25

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
26

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
27

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
28

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
29

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
30

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
31

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
32

Mossy2100 ¶

tuxedobob ¶

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
33

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
34

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
35

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
08