Làm cách nào để sử dụng kiểu dữ liệu enum trong PHP?
QCon New York (13-15 tháng 6 năm 2023). Tìm hiểu các phương pháp hay nhất từ các nhà phát triển cấp cao tại các công ty tiếp hợp sớm Show
PHP 8 - Các lớp và Enum Thích In Dấu trang 28 tháng 11 năm 2022 26 phút đọc qua
xét bởi
Viết cho InfoQTham gia cộng đồng chuyên gia. Tăng khả năng hiển thị của bạn.Phát triển sự nghiệp của bạn Tìm hiểu thêm Chìa khóa rút ra
Bài viết này là một phần của loạt bài viết "PHP 8. x". Bạn có thể đăng ký để nhận thông báo về các bài viết mới trong loạt bài này qua RSS PHP tiếp tục là một trong những ngôn ngữ kịch bản được sử dụng rộng rãi nhất trên web với 77. 3% của tất cả các trang web có ngôn ngữ lập trình phía máy chủ được biết là sử dụng nó theo w3tech. PHP 8 mang đến nhiều tính năng mới và những cải tiến khác mà chúng ta sẽ khám phá trong loạt bài viết này
Nội dung được tài trợ có liên quanNhà tài trợ liên quanĐiện toán đám mây Akamai dựa trên Linode. Một nền tảng phân phối rộng rãi và thân thiện với nhà phát triển để xây dựng, chạy và bảo mật khối lượng công việc trên đám mây. Bắt đầu dùng thử miễn phí ngay hôm nay Trong bài viết này, chúng ta sẽ xem xét các tính năng mới của PHP 8 liên quan đến các lớp, bao gồm
Thuộc tính lớp chỉ đọcCác nhà phát triển đã tìm cách làm cho các thuộc tính của lớp trở nên bất biến đối với các trường hợp sử dụng, chẳng hạn như các đối tượng giá trị. Thông thường, các thuộc tính phải được khởi tạo một lần, thường là trong một hàm tạo và không bao giờ được sửa đổi. Một giải pháp thay thế đã được sử dụng là đặt một thuộc tính ở chế độ riêng tư và chỉ khai báo một phương thức getter công khai cho nó. Điều này làm giảm phạm vi sửa đổi nhưng không loại trừ sửa đổi. Để tạo bất biến thuộc tính lớp, PHP 8. 1 thêm hỗ trợ cho các thuộc tính chỉ đọc với điều kiện thuộc tính phải được nhập. Một thuộc tính đã nhập thực sự có thể được khai báo chỉ đọc với từ khóa chỉ đọc mới. Tập lệnh sau khai báo một thuộc tính 01 thuộc loại 03được gọi là 04. Giá trị của thuộc tính chỉ được đặt một lần trong hàm tạo. Tập lệnh xuất giá trị 1 khi chạy.
Để chứng minh hiệu quả của việc làm cho thuộc tính chỉ đọc, hãy sửa đổi giá trị của nó bằng phép gán sau
Điều này sẽ tạo ra một thông báo lỗi
Để chứng minh rằng điều kiện mà thuộc tính 01 phải được nhập đúng, hãy thử tạo một thuộc tính chưa được nhập 01 như trong tập lệnh sau
Tập lệnh tạo thông báo lỗi.
Nếu không muốn một thuộc tính chỉ đọc có một loại cụ thể, bạn có thể khai báo thuộc tính đó là hỗn hợp, e. g
Ngoài yêu cầu về loại, các hạn chế khác áp dụng cho thuộc tính 01. Thuộc tính chỉ đọc không thể được khai báo 08. Chạy đoạn script sau để chứng minh điều đó
Tập lệnh tạo thông báo lỗi
Một thuộc tính chỉ đọc chỉ có thể được khởi tạo từ phạm vi mà nó được khai báo. Tập lệnh sau khởi tạo một thuộc tính chỉ đọc, nhưng không nằm trong phạm vi mà nó được khai báo.
Tập lệnh tạo thông báo lỗi khi chạy
Bạn có thể xem xét việc khai báo thuộc tính chỉ đọc với giá trị mặc định tại thời điểm khởi tạo, nhưng điều này sẽ không đặc biệt hữu ích vì bạn có thể sử dụng hằng số lớp để thay thế. Do đó, việc đặt giá trị mặc định cho thuộc tính chỉ đọc đã không được phép. Tập lệnh sau khai báo giá trị mặc định cho thuộc tính chỉ đọc 0Tập lệnh tạo thông báo lỗi khi chạy 1Mục tiêu của tính năng thuộc tính chỉ đọc là làm cho thuộc tính lớp không thay đổi. Do đó, không thể bỏ đặt thuộc tính chỉ đọc bằng unset() sau khi khởi tạo. Tập lệnh sau gọi unset() trên thuộc tính chỉ đọc sau khi được khởi tạo 2Tập lệnh tạo thông báo lỗi khi chạy 3Bạn luôn có thể gọi unset() trên thuộc tính chỉ đọc trước khi khởi tạo như trong tập lệnh sau 4Tập lệnh chạy không có lỗi và xuất giá trị của 09. Không thể sửa đổi thuộc tính 01 bằng cách gán lại đơn giản hoặc bằng bất kỳ thao tác toán tử nào khác. Tập lệnh sau không sử dụng câu lệnh gán lại cho thuộc tính chỉ đọc mà sử dụng toán tử gia số trên thuộc tính đó. 5Hiệu quả là như nhau, và thông báo lỗi cũng vậy 6Cụ thể, chỉ có thuộc tính 01 là bất biến, không phải bất kỳ đối tượng hoặc tài nguyên nào được lưu trữ trong đó. Bạn có thể sửa đổi bất kỳ đối tượng nào và thuộc tính không chỉ đọc được lưu trữ trong thuộc tính 01. Tập lệnh sau đặt giá trị của thuộc tính lớp 04 không phải là 01 thông qua thuộc tính chỉ đọc 15 thuộc loại 16. 7Tập lệnh chạy không có lỗi và xuất giá trị là 1. PHP8. 2 thêm các lớp chỉ đọc dưới dạng phần mở rộng của tính năng thuộc tính lớp chỉ đọc. Nếu một lớp được khai báo với công cụ sửa đổi 01, thì tất cả các thuộc tính của lớp là chỉ đọc hoàn toàn. Ví dụ, các thuộc tính lớp trong lớp chỉ đọc phải được nhập và không tĩnh 8Các lớp chỉ đọc có một số hạn chế trong đó các thuộc tính động không thể được xác định và chỉ một lớp chỉ đọc mới có thể mở rộng một lớp chỉ đọc khác. Quảng cáo tài sản xây dựngMục tiêu của quảng cáo thuộc tính hàm tạo, một tính năng được giới thiệu trong PHP 8. 0, là làm cho việc khai báo và khởi tạo thuộc tính lớp không cần thiết. Để giải thích chi tiết, hãy xem xét tập lệnh sau trong đó các thuộc tính của lớp 18 và 19 được khai báo trong lớp 20 và được khởi tạo trong hàm tạo của lớp. 9Với tính năng quảng cáo thuộc tính hàm tạo mới, tập lệnh được giảm xuống như sau 0Phần thân của hàm tạo có thể trống hoặc có thể chứa các câu lệnh khác, được chạy sau khi quảng cáo các đối số của hàm tạo cho các thuộc tính lớp tương ứng. Yêu cầu duy nhất để đối số hàm tạo được thăng cấp thành thuộc tính lớp là nó bao gồm một công cụ sửa đổi khả năng hiển thị. Giá trị đối số của hàm tạo được tự động gán cho một thuộc tính lớp có cùng tên. Đoạn script sau minh họa việc tự động thăng cấp và khởi tạo các đối số hàm tạo công khai cho các thuộc tính của lớp bằng cách sử dụng ví dụ về lớp 20 với lệnh gọi hàm tạo của lớp như sau. 1Bạn sẽ thấy rằng các thuộc tính của lớp được thêm vào và khởi tạo hoàn toàn, cho kết quả như sau 2Nếu một đối số hàm tạo không bao gồm công cụ sửa đổi khả năng hiển thị, thì nó không được thăng cấp thành thuộc tính lớp tương ứng. Không phải tất cả các đối số hàm tạo đều phải được thăng cấp. Tập lệnh sau không quảng bá đối số hàm tạo $pt4 vì nó không được khai báo với công cụ sửa đổi khả năng hiển thị 3Gọi phương thức khởi tạo của lớp Hình chữ nhật và xuất các giá trị thuộc tính của lớp, như trước đây. Trong trường hợp này, kết quả sẽ khác vì $pt4 không bao gồm công cụ sửa đổi khả năng hiển thị và do đó, nó không bao giờ được thăng cấp thành thuộc tính lớp tương ứng. Một thông báo cảnh báo được xuất ra 4Bạn sẽ cần khai báo và khởi tạo thuộc tính lớp $pt4 một cách rõ ràng như trong tập lệnh đã sửa đổi 5Bây giờ, bạn có thể gọi hàm tạo và thuộc tính lớp đầu ra như trước đây với cùng một đầu ra. Một yêu cầu khác để đối số hàm tạo của lớp được thăng cấp thành thuộc tính lớp tương ứng là nó không thuộc loại có thể gọi được. Đoạn script sau khai báo các đối số hàm tạo của loại có thể gọi được 6Khi chạy tập lệnh tạo thông báo lỗi 7Trong bài viết đầu tiên của loạt bài PHP 8, chúng tôi đã giải thích cách sử dụng toán tử new trong bộ khởi tạo, bao gồm khởi tạo giá trị mặc định cho tham số hàm. Toán tử mới cũng có thể được sử dụng để đặt các giá trị mặc định của tham số hàm tạo, cùng với quảng cáo thuộc tính hàm tạo, như trong tập lệnh sau
8Hàm tạo lớp 20 có thể được gọi mà không có bất kỳ đối số hàm tạo nào và các giá trị thuộc tính được thăng hạng được xuất ra 9đầu ra là 0Đối tượng sử dụng trong định nghĩa()Hàm 00 tích hợp được sử dụng để xác định các hằng số được đặt tên. Với PHP8. 1 đối tượng có thể được chuyển đến 00 như trong tập lệnh ví dụ sau. 1Đầu ra từ tập lệnh là 2Hằng số lớp có thể được khai báo cuối cùngPHP8. 1 cho phép bạn khai báo các hằng lớp bằng từ khóa final. Ngoài ra, nếu một hằng số lớp được khai báo cuối cùng trong một lớp, thì bất kỳ lớp nào mở rộng nó đều không thể ghi đè hoặc xác định lại giá trị của hằng số đó. Trong tập lệnh sau, hằng số lớp c, được khai báo là cuối cùng trong lớp A, được định nghĩa lại trong lớp B mở rộng nó 3Khi tập lệnh được chạy, thông báo lỗi sau được tạo 4Cái đặc biệt. hằng số lớp có thể được sử dụng trên các đối tượngCái đặc biệt. Hằng số 25, cho phép phân giải tên lớp đủ điều kiện tại thời điểm biên dịch, cũng có thể được sử dụng với các đối tượng lớp kể từ PHP 8. 0. Một điểm khác biệt là việc phân giải tên lớp xảy ra trong thời gian chạy với các đối tượng, không giống như việc phân giải thời gian biên dịch cho các lớp. sử dụng. 25 trên một đối tượng tương đương với việc gọi 27 trên đối tượng. Đoạn script sau sử dụng. lớp trên một đối tượng của lớp A, xuất ra “A”. 5Hằng số giao diện có thể được ghi đèKể từ PHP 8. 1, các hằng số giao diện có thể bị ghi đè bởi một lớp hoặc giao diện kế thừa chúng. Trong tập lệnh sau, hằng số giao diện c bị ghi đè bởi hằng số lớp có cùng tên. Giá trị của hằng số bị ghi đè có thể giống hoặc khác. 6Cả hai giá trị không đổi có thể được xuất ra 7đầu ra là 8Vì nó giữ cho các hằng số lớp được khai báo là 28, nên các hằng số giao diện được khai báo là 28 không thể bị ghi đè. Tập lệnh sau ghi đè hằng số giao diện được khai báo 28 9Xuất ra thông báo lỗi khi tập lệnh được chạy 0Chức năng tự động tải __autoload() bị xóaHàm 31 không được dùng trong PHP 7. 2. 0 đã bị xóa trong PHP 8. 0. Nếu hàm _ 32 được gọi, kết quả thông báo lỗi sau 1
liệt kêMột phép liệt kê, hay viết tắt là enum, là một tính năng mới để khai báo một loại tùy chỉnh với một tập hợp rõ ràng các giá trị có thể. Cấu trúc ngôn ngữ mới enum được sử dụng để khai báo một kiểu liệt kê với kiểu liệt kê đơn giản nhất là kiểu trống 2Ví dụ, một enum có thể khai báo các giá trị có thể sử dụng từ khóa case 3Các cuộc thảo luận về liệt kê được gói gọn trong các lớp vì sự giống nhau của chúng Làm thế nào enums tương tự như các lớp học
Enums hữu ích cho một số trường hợp sử dụng, chẳng hạn như
Chúng ta sẽ thảo luận về enum với một số ví dụ. Bởi vì các giá trị của enum là các đối tượng, chúng có thể được sử dụng ở nơi có thể sử dụng một đối tượng, bao gồm cả kiểu tham số hàm và kiểu trả về của hàm. Trong tập lệnh sau, enum 33 được sử dụng làm loại tham số hàm và loại trả về hàm 4Đầu ra từ tập lệnh là 5Tiếp theo, chúng ta sẽ sử dụng cùng một ví dụ về sắp xếp mảng mà chúng ta đã sử dụng trong bài viết đầu tiên của loạt bài này. Tham số cho hàm_______2_______39 thuộc loại 33, là một enum. 6Giá trị đối tượng enum được so sánh bằng toán tử == 7Ví dụ tương tự như được sử dụng với enums như sau 8Đầu ra của tập lệnh cho ví dụ sắp xếp mảng là 9Vì một trường hợp enum, hoặc giá trị có thể, là một thể hiện đối tượng, ví dụ, toán tử instanceof có thể được sử dụng với một giá trị enum 0Giá trị của enum không được chuyển đổi thành chuỗi và không thể được sử dụng làm chuỗi tương đương. Ví dụ: nếu bạn gọi hàm 41 với đối số chuỗi 1Một lỗi sẽ dẫn đến 2Tất cả các giá trị enum hoặc trường hợp đều có thuộc tính chỉ đọc được gọi là tên có giá trị là tên phân biệt chữ hoa chữ thường của trường hợp. Thuộc tính tên có thể được sử dụng để gỡ lỗi. Ví dụ: câu lệnh in sau sẽ xuất ra “Asc”. 3Các giá trị của enum phải là các giá trị duy nhất, phân biệt chữ hoa chữ thường. Đoạn script sau có các giá trị duy nhất 4Nhưng đoạn script sau không khai báo các giá trị duy nhất 5Tập lệnh tạo thông báo lỗi sau 6Các kiểu liệt kê mà chúng ta đã thảo luận là kiểu liệt kê cơ bản hoặc kiểu liệt kê thuần túy. Một enum thuần túy chỉ xác định các trường hợp thuần túy không có dữ liệu liên quan. Tiếp theo, chúng tôi thảo luận về một loại enums khác được gọi là enums được hỗ trợ enums được hỗ trợVí dụ, một enum được hỗ trợ xác định các giá trị tương đương vô hướng của loại 42 hoặc 03 cho các trường hợp enum. 7Tương đương vô hướng có thể thuộc loại 03 hoặc 42, nhưng không phải là sự kết hợp của 46 và tất cả các trường hợp của một enum được hỗ trợ phải khai báo một giá trị vô hướng. Để minh họa, hãy sử dụng Backed Enum sau đây 8Nó sẽ tạo ra một thông báo lỗi 9Tương đương vô hướng cho các trường hợp enum được hỗ trợ phải là duy nhất. Để chứng minh, hãy sử dụng tập lệnh sau đây khai báo cùng một số vô hướng tương đương cho hai trường hợp enum 0Tập lệnh sẽ dẫn đến thông báo lỗi 1Tương đương vô hướng có thể là biểu thức chữ ngoài giá trị chữ, ví dụ 2Tất cả các giá trị enum được hỗ trợ hoặc các trường hợp được hỗ trợ đều có thuộc tính chỉ đọc bổ sung có tên là 47 có giá trị là giá trị vô hướng của trường hợp được hỗ trợ. Ví dụ: câu lệnh 48 sau đây sẽ xuất ra giá trị tương đương vô hướng cho trường hợp 49 3Ở đây, giá trị là thuộc tính chỉ đọc và không thể sửa đổi. Đoạn mã sau gán một biến làm tham chiếu đến thuộc tính giá trị của trường hợp được hỗ trợ 4Việc gán biến sẽ tạo ra một thông báo lỗi 5Các enum được hỗ trợ triển khai giao diện nội bộ BackedEnum khai báo hai phương thức
Đoạn script sau minh họa việc sử dụng các phương thức này 6đầu ra là 7Các phương thức 53 và 54 sử dụng các chế độ gõ nghiêm ngặt/yếu, mặc định là gõ yếu, hàm ý một số chuyển đổi ngầm định. Các giá trị chuỗi và float cho số nguyên được chuyển đổi thành giá trị số nguyên như được minh họa bởi tập lệnh sau 8đầu ra là 9Một chuỗi không thể được chuyển đổi thành một số nguyên không được chuyển khi một int được mong đợi, như trong 0Điều trước sẽ dẫn đến một thông báo lỗi 1Trong chế độ nhập nghiêm ngặt, chuyển đổi loại không được áp dụng và các thông báo lỗi như trước hoặc sau được tạo 2Cả enum thuần túy và được hỗ trợ đều triển khai một giao diện bên trong có tên là UniEnum cung cấp một phương thức tĩnh có tên là 55 để xuất các giá trị có thể có cho enum, i. e. , các trường hợp enum. Đoạn script sau minh họa phương pháp 55 3đầu ra là 4Enums có thể bao gồm các phương thức và triển khai giao diệnEnums, cả thuần túy và được hỗ trợ, có thể khai báo các phương thức, tương tự như các phương thức thể hiện của lớp. Enums cũng có thể thực hiện một giao diện. Enum phải thực hiện các chức năng giao diện ngoài bất kỳ chức năng nào khác. Tập lệnh sau đây là một biến thể của cùng một ví dụ sắp xếp mảng bao gồm một enum triển khai giao diện. enum triển khai một hàm từ giao diện ngoài một hàm không thuộc giao diện. 5Đầu ra từ tập lệnh như sau 6Một enum được hỗ trợ cũng có thể triển khai một giao diện và cung cấp các phương thức bổ sung như trong tập lệnh sau 7Đầu ra như sau 6Enums có thể khai báo các phương thức tĩnhMột enum có thể khai báo các phương thức tĩnh. Trong một biến thể của ví dụ sắp xếp mảng, một phương thức tĩnh selectSortType() được sử dụng để chọn kiểu sắp xếp dựa trên độ dài của mảng được sắp xếp 9Đầu ra như sau 0
Enums có thể khai báo hằng sốMột enum có thể khai báo các hằng số. Đoạn script sau khai báo một hằng có tên là A. 1Các hằng số có thể đề cập đến các trường hợp riêng của enum, cũng là các hằng số. Tập lệnh sau để sắp xếp một mảng minh họa việc sử dụng các hằng tham chiếu đến enum mà chúng được khai báo 2Đầu ra như sau 3Bởi vì bản thân các giá trị của enum là các hằng số, nên một hằng số rõ ràng có thể không xác định lại giá trị của enum. Chúng tôi chứng minh điều này trong đoạn script sau 4Tập lệnh tạo thông báo lỗi sau 5Giá trị kiểu chữ của enum phải có thể đánh giá được tại thời điểm biên dịch, vì đoạn mã sau đây khai báo trường hợp enum là hằng số chứng minh 6Một thông báo lỗi được tạo ra 7Enums với những đặc điểmEnums có thể sử dụng các đặc điểm. Tập lệnh sau đây để sắp xếp một mảng khai báo một đặc điểm có tên là 57 và sử dụng đặc điểm đó trong một enum 8Đầu ra như sau 9Làm thế nào là enums khác với các lớp họcMặc dù chúng tôi đã đề cập rằng enum tương tự như các lớp, nhưng chúng khác nhau ở nhiều điểm
Để chứng minh một trong những điểm khác biệt này, hãy xem xét đoạn script sau trong đó một enum khai báo một thuộc tính lớp 0Tập lệnh tạo thông báo lỗi 1Để chứng minh một trong những khác biệt này, hãy xem xét tập lệnh sau trong đó một enum được khởi tạo 2Tập lệnh tạo thông báo lỗi 3Để chứng minh sự khác biệt khác, đầu ra 58 cho một enum thuần túy và một enum được hỗ trợ được liệt kê theo tập lệnh 4đầu ra là 5Enums không được khai báo phương thức 60. Để chứng minh, hãy sử dụng tập lệnh sau trong đó một enum triển khai giao diện 61 và cung cấp triển khai cho phương thức 62. 6Tập lệnh tạo thông báo lỗi 7Trong bài viết này, chúng ta đã thảo luận về hầu hết các tính năng liên quan đến lớp trong PHP 8, bao gồm enums, công cụ sửa đổi chỉ đọc mới cho thuộc tính lớp và quảng bá tham số hàm tạo Trong phần tiếp theo của loạt bài này, chúng ta sẽ khám phá các chức năng và phương thức liên quan đến các tính năng mới. … Bài viết này là một phần của loạt bài viết "PHP 8. x". Bạn có thể đăng ký để nhận thông báo về các bài viết mới trong loạt bài này qua RSS PHP tiếp tục là một trong những ngôn ngữ kịch bản được sử dụng rộng rãi nhất trên web với 77. 3% của tất cả các trang web có ngôn ngữ lập trình phía máy chủ được biết là sử dụng nó theo w3tech. PHP 8 mang đến nhiều tính năng mới và những cải tiến khác mà chúng ta sẽ khám phá trong loạt bài viết này Thông tin về các Tác giảDeepak VohraHiển thị thêmHiển thị ít hơn Lấy cảm hứng từ nội dung này?Trở thành biên tập viên cho InfoQ là một trong những quyết định sáng suốt nhất trong sự nghiệp của tôi. Nó đã thử thách tôi và giúp tôi trưởng thành theo nhiều cách. Chúng tôi muốn có nhiều người tham gia nhóm của chúng tôi Thomas Betts Trưởng ban biên tập, Thiết kế và kiến trúc phần mềm @InfoQ; Viết cho InfoQ Xếp hạng bài viết nàynhận con nuôi Phong cách Đã liên hệ với tác giả Nội dung này nằm trong chủ đề Ngôn ngữ lập trìnhchủ đề liên quan
Nội dung liên quan
Bản tin InfoQTổng hợp nội dung của tuần trước trên InfoQ được gửi vào thứ Ba hàng tuần. Tham gia cộng đồng hơn 250.000 nhà phát triển cấp cao. Xem một ví dụ Nhập địa chỉ email của bạn Chọn quốc gia của bạn Tôi đồng ý với InfoQ. com xử lý dữ liệu của tôi như được giải thích trong Thông báo về quyền riêng tư này. Chúng tôi bảo vệ quyền riêng tư của bạn xin chào người lạBạn cần Đăng ký tài khoản InfoQ hoặc Đăng nhập hoặc đăng nhập để gửi bình luận. Nhưng còn rất nhiều điều đằng sau việc đăng ký Kiểu dữ liệu enum trong PHP là gì?Trong PHP, Enums là một loại đối tượng đặc biệt . Bản thân Enum là một lớp và các trường hợp có thể xảy ra của nó là tất cả các đối tượng đơn lẻ của lớp đó. Điều đó có nghĩa là các trường hợp Enum là các đối tượng hợp lệ và có thể được sử dụng ở bất kỳ đâu mà một đối tượng có thể được sử dụng, bao gồm cả kiểm tra loại.
Khai báo enum trong PHP như thế nào?Cú pháp liệt kê
. Một Enum có thể tùy chọn khai báo chuỗi hoặc int làm giá trị được hỗ trợ. Enums cũng có thể mở rộng một lớp và/hoặc triển khai các giao diện. Nộ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 T_ENUM với giá trị 369 được chỉ định. with the enum keyword, followed by the name of the Enum. An Enum can optionally declare string or int as backed values. Enums can also extend a class and/or implement interfaces. Internally at the PHP parser level, there is a new token with named T_ENUM with value 369 assigned.
Khi nào nên sử dụng enum trong PHP?Việc liệt kê rất hữu ích khi bạn muốn làm việc với một tập hợp cố định các giá trị liên quan . Ví dụ: bạn có thể sử dụng một enum để đại diện cho các bộ đồ trong một bộ bài hoặc loại phương tiện. Các enum của PHP khá phức tạp, với một số tính năng mượn từ các lớp.
Làm cách nào để lấy giá trị từ enum trong PHP?Bạn có thể lấy một mảng gồm tất cả các giá trị của một enum được hỗ trợ trong PHP, theo cách sau. . Gọi phương thức case() tĩnh trên enum được hỗ trợ để nhận một mảng gồm tất cả các trường hợp đã xác định (theo thứ tự khai báo); Sử dụng array_column() trên mảng enum kết quả và chỉ định thuộc tính giá trị (công khai) làm khóa cột |