PHP的超轻量级枚举类型

1.0 2017-06-21 08:22 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:39:32 UTC


README

Build Status Downloads this Month Latest stable

简单的特质,用于创建枚举类。

将您的枚举分解成独立的类,并通过您的应用程序验证您正在传递有效的枚举值。

安装

建议使用composer安装

composer require richard-ejem/enum

示例

class UserRole
{
    use \Ejem\Enum\EnumTrait;
    
    const GUEST = 'guest';
    const USER = 'user';
    const ADMIN = 'admin';
}

class User
{
    /** @var string UserRole enum */
    private $role;
    
    /** @throws \Ejem\Enum\InvalidEnumValueException */
    public function __construct(string $role)
    {
        $this->setRole($role);
    }
    
    public function getRole(): string
    {
        return $this->role;
    }
    
    /** @throws \Ejem\Enum\InvalidEnumValueException */
    public function setRole(string $role): void
    {
        UserRole::assertValidValue($role);
        $this->role = $role;
    }
    
    // ... more user stuff
}

其他功能

// Validate without throwing exception.
// imagine you are importing users from an old system,
// setting all unsupported roles to GUEST:

$role = UserRole::isValidValue($row['role']) ? $row['role'] : UserRole::GUEST;
    
// Retrieve all possible values.
// Assign random color to a shape

$values = Color::getPossibleValues();
$shape->setColor($values[mt_rand(0, count($values)-1)]);