PHP phiên bản mới nhất là gì?
Đây là nơi quảng cáo sẽ đến. Tuy nhiên, thay vào đó, tôi muốn hướng bạn tới trang Nhà tài trợ GitHub của tôi. Nếu bạn là độc giả thường xuyên và nội dung của tôi đang giúp ích cho bạn, bạn có thể xem xét tài trợ một lần hoặc hàng tháng. Nếu bạn là một công ty đang tìm kiếm các vị trí đặt quảng cáo chuyên dụng trên blog này hoặc bản tin của tôi, bạn có thể gửi email cho tôi theo địa chỉ brendt@stitcher. io Show
PHP8. 1 được phát hành vào ngày 25 tháng 11 năm 2021. Hiện tại nó là phiên bản PHP mới nhất. Trong bài đăng này, chúng ta sẽ lần lượt xem xét tất cả các tính năng, cải tiến hiệu suất, thay đổi và ngừng sử dụng Các tính năng mớiNhư với mọi bản phát hành, PHP 8. 1 thêm một số tính năng mới hay. Hãy nhớ rằng danh sách này sẽ tăng lên trong năm 👍 👍 👍 0 Enums RFCEnums sẽ được thêm vào trong PHP 8. 1. Nếu bạn không chắc chúng có thể được sử dụng để làm gì, bạn có thể đọc về chúng tại đây Thêm enums sẽ là một cải tiến đáng kể trong PHP, vì vậy tôi rất mong đợi được thấy enums xuất hiện trong PHP 8. 1. Để cung cấp cho bạn bản xem trước nhanh về giao diện của chúng, đây là một mẫu mã
Và đây là cách chúng sẽ được sử dụng
Bạn có thể tìm thấy một phân tích chuyên sâu về cách sử dụng enums trong bài viết này sợi RFCSợi — còn gọi là "luồng xanh" — là một cơ chế cấp thấp để quản lý tính song song. Bạn có thể sẽ không sử dụng chúng trực tiếp trong các ứng dụng của mình, nhưng các framework như Amphp và ReactPHP sẽ sử dụng chúng rộng rãi Đây là một ví dụ đơn giản về việc sử dụng sợi
Nếu bạn muốn đọc thêm về sợi, những gì chúng có thể và không thể làm, bạn có thể đọc bài đăng này Xây dựng một máy phát tia lửa điện Cải thiện hiệu suất PRDmitry Stogov đã thêm một số cải tiến cho opcache, ông gọi nó là "bộ đệm kế thừa". Tính năng này cho phép các liên kết giữa các lớp được lưu vào bộ đệm, giống như các lớp được liên kết có thể được tải trước kể từ PHP 7. 4 Dmitry báo cáo hiệu suất tăng từ 5% đến 8% nhờ thay đổi này, một chi tiết nhỏ thú vị cần chú ý trong PHP 8. 1 Giải nén mảng bằng các khóa chuỗi RFCGiải nén mảng đã được cho phép trong PHP 7. 4, nhưng nó chỉ hoạt động với các phím số. Lý do khóa chuỗi không được hỗ trợ trước đây là do không có bất kỳ sự đồng thuận nào về cách hợp nhất các mảng trùng lặp. RFC giải quyết vấn đề này một cách rõ ràng bằng cách tuân theo ngữ nghĩa của 2
$fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('after resuming');3 trong trình khởi tạo RFCRFC này cho phép bạn sử dụng từ khóa 3 trong các định nghĩa hàm làm tham số mặc định, cũng như trong các đối số thuộc tính và các vị trí khác
Bạn có thể đọc tất cả về tính năng này trong bài đăng chuyên dụng này Thuộc tính chỉ đọc RFCThuộc tính lớp có thể được đánh dấu là chỉ đọc, nghĩa là chúng chỉ có thể được viết một lần ________số 8_______Cố gắng thay đổi thuộc tính chỉ đọc sau khi nó đã được khởi tạo sẽ dẫn đến lỗi
Nếu bạn muốn tìm hiểu sâu hơn về các thuộc tính chỉ đọc, bạn có thể đọc bài đăng tiếp theo của tôi Cú pháp có thể gọi hạng nhất RFCBây giờ, bạn có thể đóng từ một hàm có thể gọi được bằng cách gọi hàm có thể gọi được đó và chuyển nó 5 làm đối số của nó
Các loại giao lộ thuần túy RFCBạn đã biết về và các loại giao lộ là một tính năng tương tự. Trong trường hợp các loại liên kết yêu cầu đầu vào là một trong các loại đã cho, các loại giao nhau yêu cầu đầu vào phải là tất cả các loại đã chỉ định. Các loại giao lộ đặc biệt hữu ích khi bạn đang làm việc với nhiều giao diện
Nếu bạn thích phong cách lập trình này, bạn cần tạo một giao diện mới 6 và triển khai nó trong 7, các loại giao lộ sẽ loại bỏ chi phí đóLoại RFC $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('after resuming');8 mớiLoại 8 có thể được sử dụng để chỉ ra rằng một chức năng sẽ thực sự dừng dòng chương trình. Điều này có thể được thực hiện bằng cách đưa ra một ngoại lệ, gọi 0 hoặc các chức năng tương tự khác
8 khác với 2 ở chỗ 2 vẫn cho phép chương trình tiếp tục. Đây có vẻ như là một tính năng mới lạ nhưng nó thực sự là một tính năng khá hữu ích cho các máy phân tích tĩnhChức năng $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, ...$array1, ...$array2]; var_dump($array); // ["a" => 1, "b" => 2]4 mới RFCBạn có thể đã phải đối phó với điều này một lần trong một thời gian. xác định xem các khóa của mảng có theo thứ tự số hay không, bắt đầu từ chỉ mục 0. Giống như 5 quyết định xem một mảng nên được mã hóa dưới dạng mảng hay đối tượngPHP8. 1 thêm một hàm tích hợp để xác định xem một mảng có phải là một danh sách với các ngữ nghĩa đó hay không 0Bạn có muốn cập nhật về PHP 8. 1 phát triển? Đăng ký emailHằng số lớp cuối cùng RFCHằng số lớp trong PHP có thể bị ghi đè trong quá trình kế thừa 1Kể từ PHP 8. 1, bạn có thể đánh dấu các hằng số như vậy là 6 để ngăn chặn điều này 2Chức năng $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, ...$array1, ...$array2]; var_dump($array); // ["a" => 1, "b" => 2]7 mới RFCPHP8. 1 thêm các hàm 7 và 9 để bắt buộc đồng bộ hóa các thay đổi của tệp vào đĩa và đảm bảo bộ đệm ghi của hệ điều hành đã được xóa trước khi quay lại 3Vì đồng bộ hóa đĩa là hoạt động của hệ thống tệp nên hàm 7 sẽ chỉ hoạt động trên các luồng tệp đơn giản. Cố gắng đồng bộ hóa các luồng không phải tệp sẽ phát ra cảnh báoKý hiệu số nguyên bát phân rõ ràng RFCBây giờ bạn có thể sử dụng 1 và 2 để biểu thị các số bát phân. Ký hiệu trước đó bằng cách đặt trước một số bằng 3 vẫn hoạt động tốt 4Thay đổi đột pháTrong khi PHP 8. 1 là một phiên bản nhỏ, sẽ có một số thay đổi về mặt kỹ thuật có thể là một thay đổi đột phá và cả việc không dùng nữa. Hãy thảo luận từng cái một Các kiểu trả về phương thức nội bộ RFCRất có thể bạn sẽ gặp phải thông báo không dùng nữa này khi nâng cấp lên PHP 8. 1 5Bạn có thể nhận thấy lỗi này bật lên khi sử dụng 4, 5 và một số gói mã nguồn mở phổ biến khác. Điều đã xảy ra là các hàm bên trong đang bắt đầu sử dụng các kiểu trả về thích hợp. Nếu bạn đang mở rộng một lớp từ thư viện tiêu chuẩn (chẳng hạn như 6), bạn cũng sẽ cần thêm các loại trả về đóCách khắc phục rất đơn giản. cập nhật mã nhà cung cấp của bạn nếu xảy ra lỗi trong gói của bên thứ ba (hầu hết các lỗi đó đã được sửa với các bản phát hành mới nhất của họ). Nếu xảy ra lỗi trong mã của bạn, bạn có thể thêm thuộc tính 7, khắc phục lỗi cho đến PHP 9. 0. Đây là một ví dụ về một lớp mở rộng 8 6Hoặc bạn chỉ cần thêm kiểu trả về 7Hạn chế sử dụng class MyController { public function __construct( private Logger $logger = new NullLogger(), ) {} }9 RFCMột thay đổi nhỏ đối với cách sử dụng 9 sẽ có tác động đáng kể đến hiệu suất của tất cả các hoạt động mảng. Nikita làm tốt công việc giải thích vấn đề và giải pháp trong RFC. Thay đổi có nghĩa là một số trường hợp cạnh không thể thực hiện được nữa với 9. "Những gì không còn được hỗ trợ sẽ được ghi vào toàn bộ $GLOBALS. Tất cả những điều sau đây sẽ tạo ra lỗi thời gian biên dịch" 8Ngoài ra, việc chuyển 9 theo tham chiếu sẽ tạo ra lỗi thời gian chạy 9Nikita đã phân tích 2000 gói hàng đầu trên Packagist và chỉ tìm thấy 23 trường hợp sẽ bị ảnh hưởng bởi thay đổi này. Chúng ta có thể kết luận rằng tác động của việc này — sự thay đổi về mặt kỹ thuật — sẽ thấp, đó là lý do tại sao nội bộ quyết định thêm nó vào PHP 8. 1. Hãy nhớ rằng hầu hết chúng ta sẽ giành chiến thắng nhờ sự thay đổi này, do tác động hiệu suất tích cực mà nó có ở mọi nơi trong mã của chúng ta Tài nguyên để di chuyển đối tượngNhững thay đổi này là một phần của tầm nhìn dài hạn nhằm chuyển đổi tất cả các tài nguyên thành các đối tượng chuyên dụng. Bạn có thể đọc thêm về nó ở đây Fileinfo chức năng với các đối tượng 3Các chức năng như 4 và 5 được sử dụng để chấp nhận và trả lại tài nguyên. Kể từ PHP 8. 1, họ làm việc với 3 đối tượngHàm IMAP với các đối tượng 7Giống như thay đổi thông tin tệp, các chức năng IMAP như 8 và 9 không còn hoạt động với các tài nguyênKhông dùng nữa việc chuyển null sang đối số không nullable của các hàm bên trong RFCSự thay đổi này đơn giản. các chức năng bên trong hiện chấp nhận 0 cho các đối số không thể vô hiệu, RFC này không chấp nhận hành vi đó. Ví dụ, điều này hiện có thể 0Trong PHP8. 1, các loại lỗi này sẽ đưa ra cảnh báo không dùng nữa, trong PHP 9, chúng sẽ được chuyển thành lỗi loại Tự động hóa trên $post = new Post('Title', /* … */); $post->title = 'Other'; Error: Cannot modify readonly property Post::$title1 RFCTừ RFC
Bạn có thể đọc chi tiết trên trang RFC. Tóm lại, hành vi này không được chấp nhận 1Những thay đổi nhỏ khácVới mỗi bản phát hành, có một loạt các thay đổi rất nhỏ đối với ngôn ngữ. Tất cả chúng đều được liệt kê trong hướng dẫn NÂNG CẤP trên GitHub và RFC không dùng nữa, hãy đảm bảo kiểm tra nếu bạn muốn biết từng chi tiết nhỏ Dưới đây là tóm tắt những thay đổi quan trọng nhất
Xây dựng một máy phát tia lửa điện Tạm thời là vậy, hãy nhớ rằng tôi sẽ thường xuyên cập nhật bài đăng này trong năm, vì vậy hãy đảm bảo đăng ký nếu bạn muốn được cập nhật. Bạn có hào hứng với PHP 8 không. 1? Nhận thấy một tpyo? . Nếu bạn muốn cập nhật những gì đang diễn ra trên blog này, bạn có thể theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi. Đăng ký email Phiên bản mới nhất của PHP 2022 là gì?Phát hành. 08 Thg 12 2022 Thông báo. Tiếng Anh Nhật ký thay đổi Tải xuống. PHP8. 2. 0 (tar. gz) sha256. 435c4c2439db648cdf34236f7cd459f93f943fb788b66723a033610d4a059fc6. PHP8. 2. 0 (tar. bz2) sha256. 1bf4fca663f93d9e0b4909bd6eae0583a1ce383e7f05df126f28f272fa1fd51a. PHP8. 2. 0 (tar. xz) Sử dụng PHP 8 có ổn không?Ngoài ra, phiên bản PHP mới hơn hoạt động tốt hơn các phiên bản cũ. Sự gia tăng đáng kể về hiệu suất và bảo mật có thể là tất cả những gì cần thiết để cải thiện và đảm bảo trải nghiệm người dùng tích cực trên trang web của bạn. PHP 8 nhanh hơn đáng kể so với PHP 7 theo nhiều tiêu chuẩn web khác nhau .
Là PHP 7. 4 ổn định?PHP 7. 4 là phiên bản ổn định mới nhất của PHP .
Tại sao PHP 8 nhanh hơn?PHP 8 nhanh hơn PHP 7, cú pháp yêu cầu ít mã hơn và việc gõ được hỗ trợ tốt hơn . Ba loại cải tiến này cung cấp một bản phát hành phiên bản chính mạnh mẽ của PHP. |