Một trong những mục tiêu dài hạn trong PHP là chuyển đổi kiểu
final class CurlHandle {}
5 thành các đối tượng lớp phù hợp. Trong PHP 8, chức năng Curl được chuyển thành tài nguyên dựa trên đối tượng lớpDi chuyển tài nguyên sang đối tượng
PHP đang dần loại bỏ tất cả các loại5 với các đối tượng lớp và quá trình di chuyển này là một bước trong kế hoạch Di chuyển tài nguyên sang đối tượng.final class CurlHandle {}
Các hàm khởi tạo trả về các đối tượng
Các hàm khởi tạo Curl Các hàm
final class CurlHandle {}
7, final class CurlHandle {}
8 và final class CurlHandle {}
9 trả về tài nguyên PHP trước PHP 8. Không thể bắt buộc nhập các chức năng đó hoặc bất kỳ chức năng nào khác của người dùng trên đất liền đã sử dụng chúngTừ PHP 8, các hàm này trả về các đối tượng. Bạn vẫn phải sử dụng các hàm init để tạo các đối tượng này;
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
1 bây giờ trả về một đối tượng - /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
2
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
Trước PHP 8, khi bạn gọi
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
1, nó trả về một PHP final class CurlHandle {}
5 kiểu - /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
5Từ PHP 8 trở đi, hàm
final class CurlHandle {}
7 trả về một thể hiện của lớp - /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
2final class CurlHandle {}
3____0- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
8 bây giờ trả về một đối tượng - /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
9
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
Tương tự như
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
1 trong PHP 8, giờ đây - /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
8 trả về một đối tượng final class CurlHandle {}
92 thay vì một final class CurlHandle {}
5 với kiểu final class CurlHandle {}
94- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
final class CurlHandle {}
9final class CurlHandle {}
95 bây giờ trả về một đối tượng final class CurlHandle {}
96
final class CurlHandle {}
final class CurlHandle {}
final class CurlHandle {}
95 bây giờ trả về một đối tượng final class CurlHandle {}
96 thay vì một final class CurlHandle {}
5 với loại final class CurlHandle {}
90final class CurlHandle {}
9final class CurlHandle {}
1Tất cả các lớp mới được thêm này,
final class CurlHandle {}
4, - /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
9 và final class CurlHandle {}
93 đều tuân theo ngữ nghĩa từ tài nguyên đến đối tượngKhông được phép khởi tạo trực tiếp các đối tượng. Ví dụ:
94 sẽ dẫn đến lỗifinal class CurlHandle {}
6final class CurlHandle {}
7final class CurlHandle {}
Tất cả các lớp được khai báo cuối cùng. Mở rộng chúng không được phép
8final class CurlHandle {}
9final class CurlHandle {}
Không có thuộc tính động nào được phép. Cố gắng đặt thuộc tính động sẽ dẫn đến lỗi
0final class CurlHandle {}
1final class CurlHandle {}
Tất cả các hàm final class CurlHandle {}
95 chấp nhận đối tượng final class CurlHandle {}
96 thay vì tài nguyên
final class CurlHandle {}
final class CurlHandle {}
PHP không có kiểu
final class CurlHandle {}
5, vì vậy không thể thực thi tham số hoặc kiểu trả về cho bất kỳ hàm final class CurlHandle {}
98 nào. Điều này thuận tiện làm cho biến đổi đối tượng final class CurlHandle {}
5 thành final class CurlHandle {}
96 này không gây ra sự không tương thích ngượcfinal class CurlHandle {}
11 trả về final class CurlHandle {}
12 trên đối tượng final class CurlHandle {}
96
final class CurlHandle {}
final class CurlHandle {}
final class CurlHandle {}
Bởi vì các giá trị trả về của hàm Curl init là các đối tượng PHP tiêu chuẩn, nên hàm
final class CurlHandle {}
14 trả về final class CurlHandle {}
12, đây là trình điều khiển chính xác cho hàm đóĐiều này có thể phá vỡ mã hiện tại của bạn vì thường kiểm tra xem cuộc gọi
- /**
- * @return resource
- */
- function curl_multi_init[] {}
+ function curl_multi_init[]: \CurlMultiHandle {}
1 có thành công với cuộc gọi final class CurlHandle {}
17 hay khôngLưu ý rằng trong PHP 8 và các phiên bản cũ, các hàm
final class CurlHandle {}
18 trả về final class CurlHandle {}
12 khi tạo tài nguyên không thành côngĐể đảm bảo mã tương thích với cả PHP 8 và các phiên bản cũ hơn, bạn có thể thay đổi lệnh gọi
final class CurlHandle {}
17 bằng lệnh gọi final class CurlHandle {}
61final class CurlHandle {}
2final class CurlHandle {}
62 không còn đóng tài nguyên
final class CurlHandle {}
Vì các tài nguyên Curl hiện là các đối tượng, các điều khiển Curl bị đóng khi đối tượng không còn được tham chiếu hoặc bị hủy một cách rõ ràng
Bạn vẫn có thể gọi
final class CurlHandle {}
63, nhưng chức năng này không còn tác dụng nữaTrong mã hiện tại của bạn, bạn có thể rõ ràng
final class CurlHandle {}
64 đối tượng final class CurlHandle {}
4. PHP sẽ tự động làm điều đó theo cơ chế thu gom rác đối tượng tiêu chuẩnfinal class CurlHandle {}
3Tác động tương thích ngược
Gọi
final class CurlHandle {}
11 trên các giá trị trả về của hàm khởi tạo Curl giờ đây sẽ trả về final class CurlHandle {}
12, điều này sẽ phá vỡ mã hiện có. Để tương thích với nhiều phiên bản, hãy luôn sử dụng final class CurlHandle {}
68 sẽ đánh giá chính xác trong tất cả các phiên bản PHPPHP không có loại
final class CurlHandle {}
5 được khai báo theo cách mà bạn có thể thực thi nó trong mã vùng đất của người dùng. Điều này giảm thiểu bất kỳ chức năng gõ có thểHơn nữa,
final class CurlHandle {}
62 không còn đóng hiệu quả trình xử lý Curl. Vì trình xử lý hiện là đối tượng nên tài nguyên sẽ bị hủy trong quá trình thu gom rác, trừ khi trình xử lý được đóng rõ ràng bằng lệnh gọi final class CurlHandle {}
64. Cuộc gọi final class CurlHandle {}
64 này có thể được sử dụng trong các phiên bản PHP cũ hơn mà không làm hỏng chức năng. Xem ví dụ trong phần final class CurlHandle {}
62 ở trênKhông thể nhập chức năng này vào các phiên bản PHP cũ hơn. Điều này có nghĩa là nếu bạn bắt đầu thực thi các loại
final class CurlHandle {}
4, final class CurlHandle {}
93 và final class CurlHandle {}
93, mã đó sẽ không hoạt động trong các phiên bản PHP cũ hơn