此包已被废弃且不再维护。没有建议替代包。

PHP 枚举类型

1.0-alpha2 2021-02-01 14:00 UTC

This package is auto-updated.

Last update: 2021-10-29 15:28:35 UTC


README

在当前版本的PHP中,不支持enum类型。此包将引入PHP中的enum类型。用例基于Java枚举类型。枚举类型是一种特殊的数据类型,允许变量成为一组预定义常量的集合。变量必须等于为其预定义的值之一。

注意

该项目目前正在开发中,仍处于alpha阶段。

安装

可以通过执行以下命令来安装此包

composer require typiqally/enum

基本

可以像这样创建基本枚举

use Typiqally\Enum\Enum;

/**
 * @method static self NORTH()
 * @method static self EAST()
 * @method static self SOUTH()
 * @method static self WEST()
 */
class Direction extends Enum
{
}

使用

它们的使用方法如下

public function walk(Direction $direction): void {
    //Walk logic
}

$this->walk(Direction::NORTH());

枚举常量可以具有mixed值,这意味着它可以具有类似Java枚举类型的动态值。值的分配方式如下

use Typiqally\Enum\Enum;

/**
 * @method static self NORTH()
 * @method static self EAST()
 * @method static self SOUTH()
 * @method static self WEST()
 */
class Direction extends Enum
{
    protected static function values(): array
    {
        return [
            'NORTH' => [
                'degrees' => 0 | 360
            ],
            'EAST' => [
                'degrees' => 90
            ],
            'SOUTH' => [
                'degrees' => 180
            ],
            'WEST' => [
                'degrees' => 270
            ]
        ];
    }

    public function getDegrees(): int
    {
        return $this->value['degrees'];
    }
}

使用

它们的使用方法如下

public function walk(Direction $direction): void {
    $degrees = $direction->getDegrees();
}

$this->walk(Direction::NORTH());

许可证

该项目使用GPL-3.0许可证。有关完整的许可证文本,请参阅LICENSE.md