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). Show
Đ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 objectsMã 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ạiTrướ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 parseerrorParseErrorLỗ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ọngTấ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
Chỉ các biến nên được gán bằng tham chiếuChỉ 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.
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 131 |