Enums in PHP 8.1 provides a native way to define named value collections, improving code readability and type safety. 1. Use enum keyword definition to support associative scalar values ??(such as strings or integers) or pure enums; 2. Enumerations have type checks to avoid illegal values ??being passed in; 3. Provide cases() to obtain all options, tryFrom() safely converts the original value to an enum instance; 4. It does not support inheritance or direct instantiation, and pay attention to manual conversion when interacting with the database/API; 5. It is suitable for fixed value collections, and is not recommended for frequently changing values. Compared with the old version of constant simulation enumeration, PHP 8.1 enumeration reduces redundant logic and improves code structure clarity.
Enums in PHP 8.1 are a way to define a set of named values, making your code more readable and less error-prone. Before this feature, developers often used constants or classes to mimic enum behavior, but it wasn't built into the language. Now, with native support, you can create cleaner, more structured code.
What Exactly Is an Enum?
An enum (short for enumeration ) is a special kind of class that represents a fixed set of related values. For example, if you want to represent days of the week or status codes like "pending", "active", or "blocked", enums are perfect.
Here's how you define one:
enum Status: string { case PENDING = 'pending'; case ACTIVE = 'active'; case BLOCKED = 'blocked'; }
This creates a Status
type that can only be one of those three values ??— nothing else. That helps avoid bugs from typos or unexpected inputs.
Enums can also be backed (like the example above with strings or integers) or pure , meaning they don't have any associated value at all:
enum Direction { case UP; case DOWN; case LEFT; case RIGHT; }
In short, enums help you enforce valid values ??and make your intentions clearer in code.
Why Use Enums instead of Constants?
Before PHP 8.1, people used class constants to simulate enums:
class Status { public const PENDING = 'pending'; public const ACTIVE = 'active'; public const BLOCKED = 'blocked'; }
But this has downsides:
- No type safety — any string could be passed where a constant was expected.
- Harder to manage when you need to validate input.
- You had to write extra logic to list possible values ??or compare them.
With enums, you get:
- Type checking — only valid cases are allowed.
- Easy comparison using
===
. - Built-in methods like
tryFrom()
andcases()
to safely convert or list values.
Enums are just a better, safer way to handle fixed sets of values.
How to Use Enums in Real Code
Let's say you're building a user system and want to handle account statuses.
Basic Usage
function setStatus(Status $status): void { echo "User status is: " . $status->value; } setStatus(Status::ACTIVE);
If someone tries to call setStatus('random_string')
, PHP will throw a type error — that's the power of enums.
Fetching All Cases
You can list all available options using cases()
:
foreach (Status::cases() as $case) { echo $case->name . ': ' . $case->value . PHP_EOL; }
This prints:
PENDING: pending ACTIVE: active BLOCKED: blocked
Safe Value Lookup
Use tryFrom()
to convert a raw value back to an enum:
$input = 'blocked'; $status = Status::tryFrom($input); if ($status) { // do something with $status } else { // invalid input }
This avoids manual checks and reduces boilerplate.
A Few Things to Watch Out For
Enums are great, but there are a few gotchas:
- Only backed enums support
tryFrom()
andfrom()
— pure enums can't map arbitrary values. - Enums can't be extended or instantiated directly (
new Status()
won't work). - Be careful mixing enums with databases or APIs — you'll often need to convert between strings/values ??and enum types manually.
Also, while enums are powerful, don't overuse them. If a value isn't truly fixed or might change often, stick with regular variables or config files.
Basically that's it. Enums in PHP 8.1 are straightforward once you understand the basics, and they add real value by reducing errors and improving readingability.
The above is the detailed content of What are Enums in PHP 8.1?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The enumeration function in PHP8.1 enhances the clarity and type safety of the code by defining named constants. 1) Enumerations can be integers, strings or objects, improving code readability and type safety. 2) Enumeration is based on class and supports object-oriented features such as traversal and reflection. 3) Enumeration can be used for comparison and assignment to ensure type safety. 4) Enumeration supports adding methods to implement complex logic. 5) Strict type checking and error handling can avoid common errors. 6) Enumeration reduces magic value and improves maintainability, but pay attention to performance optimization.

Fibers was introduced in PHP8.1, improving concurrent processing capabilities. 1) Fibers is a lightweight concurrency model similar to coroutines. 2) They allow developers to manually control the execution flow of tasks and are suitable for handling I/O-intensive tasks. 3) Using Fibers can write more efficient and responsive code.

Enumeration is a user-defined data type in C language. It is used to give names to integer constants, making programs easier to read and maintain. The keyword "enum" is used to declare an enumeration. The following is the syntax of enumerations in C language: enumenum_name{const1,const2,.....};Theenumkeywordisalsousedtodefinethevariablesofenumtype.Therearetwowaystodefinethevariablesofenumtypeasfollows.enumweek{sunday,monday,tuesday,

An enumeration in Python is a user-defined data type that consists of a named set of values. A finite set of values ??is defined using an enumeration, and these values ??can be accessed in Python using their names instead of integer values. Enumerations make code more readable and maintainable, and they also enhance type safety. In this article, we will learn how to find an enumeration by its string value in Python. To find an enum by a string value we need to follow these steps: Import the enum module in your code Define the enum with the required set of values ??Create a function that takes the enum string as input and returns the corresponding enum value . Syntax fromenumimportEnumclassClassName(Enum

Benefits of using enumeration types as function return values: Improve readability: Use meaningful name constants to enhance code understanding. Type safety: Ensure return values ??fit within the expected range and avoid unexpected behavior. Save memory: Enumerated types generally take up less storage space. Easy to extend: New values ??can be easily added to the enumeration.

C++ is a common programming language whose syntax is relatively rigorous and easy to learn and apply. However, during specific programming, it is inevitable to encounter various errors. One of the common errors is "enumeration members need to be initialized within parentheses". In C++, the enumeration type is a very convenient data type that can define a set of constants with discrete values, such as: enumColor{RED,YELLOW,GREEN}; In this example, we define an enumeration Type Color, which contains three enumerations

Java is an object-oriented programming language that provides rich syntax and built-in types. An enumeration type in Java is a special type that allows the programmer to define a fixed collection of values ??and assign a name to each value. Enumeration types provide a simple, safe, and readable way to represent a group of related constants. The enumeration type in Java is a reference type, which was introduced in JavaSE5. The definition of an enumeration type uses the keyword "enum" to list all enumeration constants in the definition. Every

After JDK version 5, Java introduced enumerations. It is a set of constants defined using the keyword 'enum'. In Java, final variables are somewhat similar to enumerations. In this article, we will create a Java program in which we define an enumeration class and try to access all the constants defined in the enumeration using valueOf() and values() methods. The Chinese translation of Enum is: Enumeration. When we need to define a fixed set of constants, we use the enumeration class. For example, if we want to use the days of the week, the names of the planets, the names of the five vowels, etc. Note that the names of all constants are declared in uppercase letters. Although in Java, enumeration is a class type, we cannot instantiate it. exist
