Hướng dẫn php is_enum

Giới thiệu

Chào mọi người, sau một tháng thì mình đã trở lại đây [hehe].

Nội dung chính

  • Giới thiệu
  • Enum là gì?
  • Laravel Enum
  • Cài đặt
  • Tạo Enum và sử dụng
  • Các phương thức hỗ trợ
  • Khởi tạo và sử dụng thể hiện của Enum
  • Validation Enum
  • Đa ngôn ngữ [Localization]
  • Kết luận
  • Tham khảo

Nếu như các bạn đã từng làm việc với các ngôn ngữ như Java, C#, C++,... thì hẳn là các bạn không còn xa lại gì với Enum. Còn đối với các bạn chưa từng nghe qua Enum thì không sao bởi vì trong bài viết này chúng ta sẽ cùng tìm hiểu về Enum và cách sử dụng Enum trong Laravel với pagake Laravel Enum.

Enum là gì?

Enum là một kiểu dữ liệu đặc biệt, thường sử dụng cho việc định nghĩa một tập hợp cho các hằng số có giá trị cố định. Ví dụ như:

  • Các ngày trong tuần [Monday, Tuesday, ... Sunday]
  • Giới tính [Man, Woman, Other]
  • Các mùa trong năm [Spring, Summer, Autumn, Winter]
  • .....

Lợi ích của Enum:

  • Giảm các lỗi gây ra bởi chuyển đổi số hoặc nhập sai số.
  • Thuận lợi cho việc quản lý, dễ dàng thay đổi các giá trị trong tương lai.
  • Làm cho code tường minh hơn, dễ đọc hơn, giảm việc xuất hiện bug.

  • .....

Tuy nhiên PHP nói chung và Laravel nói riêng lại không hỗ trợ trực tiếp Enum, nhưng dù vậy chúng ta vẫn có thể sử dụng Enum gián tiếp bằng các hằng số [const] trong các class.

Trong Laravelcó một package vô cùng hữu ích hỗ trợ việc tạo và sử dụng Enum đó là Laravel Enum. Chúng ta cùng tìm hiểu package hữu ích này nhé.

Laravel Enum

Cài đặt

Yêu cầu: Laravel >= 5.4 và PHP >= 7.1

Bạn hãy mở terminal lên và chạy lệnh sau để cài đặt package:

composer require bensampo/laravel-enum

Nếu bạn sử dụng Laravel < 5.5, thì bạn cần copy dòng sau đây và thêm vào providers trong file config/app.php:

BenSampo\Enum\EnumServiceProvider

Tạo Enum và sử dụng

Ví dụ đặt ra: Giả sử trong hệ thống của mình, User có 3 quyền [role] với các giá trị tương ứng lưu trong DB là :

  • Administrator = 0
  • Moderator = 1
  • Member = 2

Thông thường các bạn sẽ dùng file config để quản lý các giá trị này để nhằm mục đích dễ dàng thay đổi khi cần thiết. Enum cũng có tác dụng tương tự, ngoài ra nó còn làm cho code trờ nên tường mình hơn. Ở ví dụ này mình sẽ sử dụng Enum nhé:

Mình sẽ tạo một Enum tên là UserRole để lưu các quyền của User trong hệ thống và các giá trị tương ứng của nó bằng lệnh sau:

php artisan make:enum UserRole

Một Enum UserRole sẽ được tạo ra ở trong folder App\Enums, bạn cần thêm các giá trị role của User vào file này như sau:

Chủ Đề