Php 8.1
PHP8. 1 thêm hỗ trợ cho Enumerations. Enumeration, hay viết tắt là Enum, là một kiểu liệt kê có một số lượng cố định các giá trị có thể Show Một sự tương tự phổ biến cho một Enum là phù hợp trong một cỗ bài chơi. Một bộ bài có bốn quân bài cố định. Câu lạc bộ, Kim cương, Trái tim và Spades Trong PHP, những bộ quần áo này có thể được liệt kê bằng Enum
Với 9 Enum, giờ đây có thể thực thi các loại khi chấp nhận hoặc trả về một giá trị phù hợp
Ngược lại với việc sử dụng các chuỗi hoặc số đặc biệt bên trong (i. e. số ma thuật) để lưu trữ và làm việc với các tham số, Enums làm cho mã ứng dụng dễ đọc hơn và tránh trạng thái ứng dụng không mong muốn PHP8. 1 dự trữ và sử dụng từ khóa 0 để khai báo Enums. Cú pháp tương tự như cú pháp trait/class/interface
Enums được khai báo với từ khóa 0, theo sau là tên của Enum. Một Enum có thể tùy chọn khai báo 2 hoặc 3 như. Enums cũng có thể mở rộng một lớp và/hoặc triển khai các giao diệnNội bộ ở cấp trình phân tích cú pháp PHP, có một mã thông báo mới có tên 4 với giá trị 5 được chỉ địnhEnums cũng có thể giữ một giá trị cho từng trường hợp, điều này làm cho chúng trở thành Backed Enums
Sau đây là một ví dụ về Enum khai báo loại giá trị được hỗ trợ và triển khai giao diện
PHP8. 1 cũng thêm một hàm 6 mới để kiểm tra xem một Enum đã cho có tồn tại hay không
Lưu ý rằng do , hàm 8 cũng trả về 9 cho một EnumCác enum không được hỗ trợ bằng một giá trị sẽ tự động triển khai giao diện 0
Enums không thể triển khai giao diện này một cách rõ ràng vì nó được thực hiện bên trong bởi công cụ. Điều này chỉ để hỗ trợ xác định loại Enum đã cho. Phương thức trả về một mảng gồm tất cả các trường hợp của một Enum đã cho Các lớp PHP không được phép triển khai giao diện này và dẫn đến lỗi nếu thử
Mặc dù, không được phép khai báo một phương thức có tên 3 0 1Nếu một Enum khai báo các giá trị được hỗ trợ vô hướng, thì Enum đó sẽ tự động gọi một giao diện 4. Tương tự như giao diện 0, không thể triển khai giao diện 4 một cách rõ ràng 2Xem và để biết thông tin sử dụng của họ Các lớp tiêu chuẩn không được phép triển khai giao diện này 3_______2_______4Tương tự như hạn chế không cho phép một phương thức có tên 3 không được phép, mọi Enum được hỗ trợ không được khai báo một phương thức 1 hoặc 2 5_______2_______6Enums được triển khai nội bộ trên các lớp PHP hàng đầu và chúng kế thừa hầu hết ngữ nghĩa của lớp với các hạn chế bổ sung được áp đặt Enums hỗ trợ không gian tên, tự động tải, chúng có thể có các phương thức (nhưng), triển khai giao diện và nhiều hành vi khác liên quan đến các lớp PHP Một enum cơ bản chỉ đơn giản là một cấu trúc 0, trong đó mỗi trường hợp được khai báo với từ khóa 4. Với Enums được hỗ trợ trong PHP 8. 1, PHP hiện dành riêng 5 làm từ dành riêng và ngăn mọi chức năng, lớp, giao diện, v.v. từ việc được tạo ra với 0. Nó có thể là một phần của không gian tên do những thay đổi trong cách PHP xem xét các từ khóa dành riêng trong các giá trị không gian tênTrong cấu trúc 0, nó có thể chứa bất kỳ số lượng "trường hợp" nào, từ 0 đến không giới hạn. Cả hai khai báo Enum này đều hợp lệ 7 8Có thể gán giá trị 2 hoặc 3 cho từng trường hợp trong Enum. Điều này có thể hữu ích khi tuần tự hóa dữ liệu, lưu trữ chúng trong cơ sở dữ liệu, v.v.Enums giữ một giá trị, i. e. một Enum được hỗ trợ, phải
9Để một Enum có thể liên kết các giá trị cho từng trường hợp (i. e. a Backed Enum) thì phải khai báo kiểu vô hướng tại phần khai báo Enum Không làm như vậy dẫn đến một lỗi 0 1Enums chỉ hỗ trợ các loại vô hướng 2 và 3. Bất kỳ loại nào khác, bao gồm 06, 07, 08, 09, hoặc thậm chí là loại liên kết 10 đều không được phép 2_______3_______3
Nếu một Enum khai báo kiểu giá trị vô hướng thì nó phải đặt giá trị cho tất cả các trường hợp 4Trong đoạn mã trên, 11 Enum được khai báo có chứa 2, nhưng các trường hợp không được gán giá trị. Điều này không được phép và dẫn đến lỗiVới một Backed Enum, các giá trị gán cho mỗi case phải cùng kiểu với khai báo trong type PHP thực thi nghiêm ngặt điều này ngay cả khi không kích hoạt nghiêm ngặt_types 5 6
Một Enum hợp lệ không được chứa các trường hợp trùng lặp hoặc các giá trị trùng lặp. Ví dụ: cả hai khai báo này đều không hợp lệ 7 8
Bản thân tên của Enum không phân biệt chữ hoa chữ thường và nó tuân theo cách PHP xử lý các lớp và hàm theo cách không phân biệt chữ hoa chữ thường Các trường hợp riêng lẻ trong Enum phân biệt chữ hoa chữ thường 9Enums hỗ trợ không gian tên. Chúng tuân theo cú pháp không gian tên tiêu chuẩn được sử dụng trong các lớp, đặc điểm, giao diện, chức năng, v.v. 0Giống như PHP hỗ trợ tự động tải cho các lớp, đặc điểm và giao diện, Enums cũng hỗ trợ tự động tải Lưu ý rằng điều này có thể yêu cầu cập nhật cho trình tạo bản đồ lớp quét các tệp để tìm các mục có thể tải tự động Enums hỗ trợ đầy đủ tất cả các hằng số ma thuật mà PHP hỗ trợ cho các lớp
Hàm lớp/đối tượng và function pick_card(Suit $suit) {} |