Thử nghiệm alpha của PHP 8.2 đã bắt đầu

Bản phát hành alpha đầu tiên của nhánh mới của ngôn ngữ lập trình PHP 8.2 đã được trình bày. Việc phát hành dự kiến ​​vào ngày 24 tháng 8.2. Những cải tiến chính đã có sẵn để thử nghiệm hoặc được lên kế hoạch triển khai trong PHP XNUMX:

  • Đã thêm các loại riêng biệt “false” và “null”, có thể được sử dụng, chẳng hạn như cho một hàm trả về cờ chấm dứt lỗi hoặc một giá trị trống. Trước đây, “false” và “null” chỉ có thể được sử dụng kết hợp với các loại khác (ví dụ: “string|false”), nhưng bây giờ chúng có thể được sử dụng riêng biệt: function AlwaysFalse(): false { return false; }
  • Đã thêm khả năng đánh dấu một lớp là chỉ đọc. Các thuộc tính trong các lớp như vậy chỉ có thể được đặt một lần, sau đó chúng không thể thay đổi được. Trước đây, các thuộc tính lớp riêng lẻ có thể được đánh dấu là chỉ đọc, nhưng bây giờ bạn có thể bật chế độ này cho tất cả thuộc tính lớp cùng một lúc. Việc chỉ định cờ "chỉ đọc" ở cấp lớp cũng chặn các thuộc tính được thêm động vào lớp. lớp chỉ đọc Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'sai'; // Lỗi: Không thể tạo thuộc tính động Post::$unknown
  • Khả năng tạo động các thuộc tính trong một lớp (như "post->unknown" trong ví dụ trên) đã không còn được dùng nữa. Trong PHP 9.0, việc truy cập các thuộc tính không được xác định ban đầu trong lớp sẽ dẫn đến lỗi (ErrorException). Các lớp cung cấp phương thức __get và __set để tạo thuộc tính hoặc thuộc tính động trong stdClass sẽ tiếp tục hoạt động mà không có thay đổi, chỉ hỗ trợ công việc ngầm với các thuộc tính không tồn tại để bảo vệ nhà phát triển khỏi các lỗi ẩn. Để duy trì hoạt động của mã cũ, thuộc tính “#[AllowDynamicProperties]” được đề xuất, cho phép sử dụng các thuộc tính động.
  • Cung cấp khả năng lọc các tham số nhạy cảm trong đầu ra theo dõi ngăn xếp khi xảy ra lỗi. Việc cắt bỏ một số thông tin nhất định có thể cần thiết khi thông tin về lỗi xảy ra được tự động gửi đến các dịch vụ của bên thứ ba nhằm theo dõi sự cố và thông báo cho nhà phát triển về chúng. Ví dụ: bạn có thể loại trừ các tham số bao gồm tên người dùng, mật khẩu và biến môi trường khỏi quá trình theo dõi. kiểm tra hàm( $foo, #[\SensitiveParameter] $password, $baz ) { ném ngoại lệ mới('Error'); } test('foo', 'mật khẩu', 'baz'); Lỗi nghiêm trọng: Ngoại lệ chưa được bắt: Lỗi trong test.php:8 Dấu vết ngăn xếp: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} được đưa vào test.php trên dòng 8
  • Khả năng thay thế các giá trị biến thành chuỗi bằng cách sử dụng biểu thức "${var}" và ${(var)} đã không còn được dùng nữa. Hỗ trợ cho các thay thế "{$var}" và "$var" thường được sử dụng đã được giữ lại. Ví dụ: "Xin chào {$world}"; Được rồi "Xin chào $world"; Được rồi "Xin chào ${world}"; Không được dùng nữa: Việc sử dụng ${} trong chuỗi không được dùng nữa
  • Các phương thức gọi được hỗ trợ một phần không được dùng nữa có thể được gọi thông qua "call_user_func($callable)" nhưng không hỗ trợ gọi dưới dạng "$callable()": "self::method" "parent::method" "static" ::method " ["tự", "phương thức"] ["cha mẹ", "phương thức"] ["static", "phương thức"] ["Foo", "Bar::method"] [Foo mới, "Bar: :phương thức" ]
  • Đã thực hiện chuyển đổi trường hợp độc lập với miền địa phương. Các hàm như strtolow() và strtoupper() giờ đây luôn chuyển đổi kiểu chữ trong phạm vi ASCII như thể được đặt thành ngôn ngữ "C".

Nguồn: opennet.ru

Thêm một lời nhận xét