Understanding Enums in PHP 8

Enums, introduced in PHP 8.1, provide a way to define a set of possible values for a type, offering a structured and type-safe alternative to constants. They are ideal for situations where you need to represent a fixed set of options, such as user roles, status codes, or any predefined list of values.

Basic Enum Syntax:

To declare an enum in PHP 8.1, you use the enum keyword:

enum UserRole {
    case Admin;
    case Editor;
    case Subscriber;
}

Here, UserRole defines three possible values: Admin, Editor, and Subscriber.

Using Enums

Enums can be used as types in function parameters, ensuring that only the defined values are allowed:

function getUserPermissions(UserRole $role): array {
    return match($role) {
        UserRole::Admin => ['create', 'edit', 'delete'],
        UserRole::Editor => ['create', 'edit'],
        UserRole::Subscriber => ['read'],
    };
}

$role = UserRole::Admin;
$permissions = getUserPermissions($role);

This setup guarantees that only valid roles can be passed to the function.

Backed Enums

Enums can also be associated with scalar values, like strings or integers:

enum Status: string {
    case Active = 'active';
    case Inactive = 'inactive';
    case Suspended = 'suspended';
}

echo Status::Active->value; // Outputs: 'active'

Backed enums are useful when you need to map enum values to database entries or other external systems.

Enum Methods

PHP enums can contain methods for more complex logic:

enum OrderStatus {
    case Pending;
    case Shipped;
    case Delivered;

    public function isFinal(): bool {
        return $this === self::Delivered;
    }
}

Here, OrderStatus includes a method isFinal to check if the status is Delivered.

Conclusion:

Enums in PHP 8.1 bring type safety and clarity to your code by grouping related constants. They are especially useful when you need to ensure that a variable can only hold a predefined set of values, making your code more robust and easier to maintain.

 

Read Also :-

Fibers – Bringing Async Programming to PHP

HTML Code for Working With SASS CSS

Also Visit :-

https://inimisttech.com/

Leave a Reply