giritli/enum

该包最新版本(v0.1.5)没有可用的许可信息。

易于使用的枚举类。

v0.1.5 2019-03-20 16:46 UTC

This package is auto-updated.

Last update: 2024-09-21 20:08:19 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

枚举

PHP 缺少枚举类型。这是 PHP 中枚举类型的一个实现。它允许你定义自己的枚举类型并将它们用作值对象。

安装

要使用 composer 安装此包,请运行以下命令

composer require giritli/enum

示例用法

创建一个将扩展 Enum 类的初始类。

final class StatusEnum extends Giritli\Enum\Enum {
    
    const draft = 'draft';
    const active = 'active';
    const archived = 'archived';
    const cancelled = 'cancelled';
    
    protected $default = self::draft;
}

就这么简单。你现在有一个完整的枚举。由于枚举类旨在作为数据类型使用,建议所有枚举类都应该是最终的,但这当然取决于具体的使用情况。

示例用法

// This status defaults to draft as specified in the class
$status = new StatusEnum();


// You can instantiate an enum by value
$status = new StatusEnum('active');
$status = new StatusEnum(StatusEnum::active);


// Or by name
$status = StatusEnum::draft();


// Get the ordinal value of the enum
$status->getOrdinal(); // 0


// Get the value of the enum
$status->getValue(); // draft
echo $status;


// Get the key of the enum
$status->getKey(); // draft


// Get all values of an enum
$status->getValues();
StatusEnum::getValues();


// Get all ordinal values of an enum
$status->getOrdinals();
StatusEnum::getOrdinals();


// Get all key values of an enum
$status->getKeys();
StatusEnum::getKeys();

键是类常量的名称,值是类常量的值。通常这些值应该是相同的,但在某些情况下这可能不成立。

一旦实例化,枚举的值就不能更改。你需要实例化一个不同值的新的对象。枚举值也不能动态更改。

它如何工作?

枚举值由定义的类常量指定。可以通过传递枚举值来实例化枚举,如果没有传递任何值且有默认枚举值,也可以实例化枚举。还可以通过调用枚举名称作为方法来实例化枚举。