gpslab / enum
枚举实现的简单快捷方法
dev-master
2019-12-19 07:53 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- happy-types/enumerable-type: ~1.0
- marc-mabe/php-enum: ~2.3
- myclabs/php-enum: ~1.5
- php-coveralls/php-coveralls: ^1.0
- phpbench/phpbench: ~0.12
- phpunit/phpunit: ^4.8.36
- scrutinizer/ocular: ~1.3
- symfony/console: ~2.3|~3.0
This package is auto-updated.
Last update: 2024-09-19 18:45:52 UTC
README
PHP 枚举
枚举实现的简单快捷方法
简介
定义
在计算机编程中,枚举类型(也称为 枚举 或 enum)是一种数据类型,它由一组称为 元素、成员或枚举器的命名值组成。 —— 维基百科
SplEnum
SplEnum 没有集成到 PHP 中,您需要单独安装它
$ sudo pecl install SPL_Types
.
此外,它并非万能良药
class Month extends SplEnum { const JANUARY = 1; const FEBRUARY = 2; } class Fruit extends SplEnum { const APPLE = 1; const ORANGE = 2; } // you must create new instance before each use: $jan = new Month(Month::JANUARY); $jan2 = new Month(Month::JANUARY); $apple = new Fruit(Fruit::APPLE); var_dump($jan === $jan2); // false var_dump($jan === Month::JANUARY); // false var_dump($jan == Fruit::APPLE); // true
基准测试
PHP 7 上的枚举基准测试
$ tests/benchmark/enum.php 100000
------------------------------- ------------ --------------
Test Memory Avg Duration All
------------------------------- ------------ --------------
Reflection enum 1.52 KiB 1820 ms
Reflection enum (no magic) 1.52 KiB 1718 ms
Explicit enum 0.71 KiB 959 ms
myclabs/php-enum 0.68 KiB 1971 ms
marc-mabe/php-enum 1.59 KiB 2219 ms
marc-mabe/php-enum (no magic) 1.59 KiB 1969 ms
happy-types/enumerable-type 1.81 KiB 2322 ms
------------------------------- ------------ --------------
PHP 7 上的集合基准测试
$ tests/benchmark/set.php 100000
-------------------- ------------ --------------
Test Memory Avg Duration All
-------------------- ------------ --------------
Reflection set 1.36 KiB 1238 ms
marc-mabe/php-enum 1.59 KiB 2861 ms
-------------------- ------------ --------------
如何获取具有默认值的枚举?
final class Color extends ReflectionEnum implements EnumDefault { const RED = 1; const GREEN = 2; const BLUE = 3; /** * @return Color */ public static function byDefault() { return self::byValue(self::RED); } }