jdecool/enum

此包已被弃用,不再维护。未建议替代包。

PHP的另一个Enum实现

v1.0.0 2020-12-07 23:43 UTC

This package is auto-updated.

Last update: 2022-02-24 20:21:24 UTC


README

Build Status Latest Stable Version

PHP的另一个Enum实现。

弃用

⚠️ 此项目不再活跃维护。

原生enum自PHP 8.1版本开始出现:[PHP枚举](https://php.ac.cn/enumerations) 如果您的项目正在运行PHP 8.1+或您的库将其作为最低要求,则应使用它而不是此库。

为什么?

为什么要创建另一个enum包?

我通常根据需要使用两个enum实现:[myclabs/php-enum](https://github.com/myclabs/php-enum/) 或 [marc-mabe/php-enum](https://github.com/marc-mabe/php-enum)。

我赞赏第一个 myclabs/php-enum 的简单性,但它有一个大的缺陷:两次访问相同的enum值不会返回相同的类实例。

这就是为什么我有时使用第二个 marc-mabe/php-enum,但它的缺点是,不可能有私有常量来表示我们的enum值。因此,这些常量都是公开的。

这就是为什么我决定创建自己的enum实现,它具有 myclabs/php-enum 的简单性和 marc-mabe/php-enum 的强大功能。

安装

此库需要PHP >= 8.0,您可以使用Composer轻松安装它。

composer require jdecool/enum

声明

use JDecool\Enum\Enum;

class MyEnum extends Enum
{
    public const ENUM_1 = 'value_1';
    protected const ENUM_2 = 'value_2';
    private const ENUM_3 = 'value_3';
}

使用

$value1 = MyEnum::ENUM_1();
$value2 = MyEnum::ENUM_2();
$value3 = MyEnum::ENUM_3();