ginnerpeace / php-enum
这个类提供了在PHP中模拟和获取枚举数据的原生能力。
v1.8
2021-01-17 13:07 UTC
Requires
- php: ^5.6|^7.0|^8.0
Requires (Dev)
- phpunit/phpunit: ^6.5
README
这个类提供了在PHP中模拟和获取枚举数据的原生能力。
- 您可以轻松地转换枚举值。
- 需要php>=5.6.0,因为使用了数组常量。
入门指南
安装
composer require ginnerpeace/php-enum
示例
创建一个枚举数据的类,例如
<?php use PHPEnum\Enum; /** * custom global request code */ class RequestCode extends Enum { CONST SUCCESS = 0; CONST ERROR = 1; CONST __DICT = [ self::SUCCESS => 'request success', self::ERROR => 'request failure', ]; }
使用
- 范围解析运算符
<?php // Use value. RequestCode::SUCCESS; // 0 RequestCode::ERROR; // 1 // Determine if the name has been in Enum. RequestCode::hasName('SUCCESS'); // true RequestCode::hasName('TEST'); // false // Determine if the name has been in Enum. // Using strict comparison usually, unless strict is set to false. RequestCode::hasValue(1); // true RequestCode::hasValue('1'); // false RequestCode::hasValue('1', false); // true RequestCode::hasValue(9); // false // Value & Name, convert each other. RequestCode::nameToValue('SUCCESS'); // 0 RequestCode::nameToValue('TEST'); // throw UnexpectedValueException RequestCode::valueToName(1); // 'ERROR' RequestCode::valueToName(9); // throw UnexpectedValueException // Translate the given constant name/value to the display value. RequestCode::transName('ERROR'); // 'request failure' RequestCode::transName('TEST'); // 'TEST' RequestCode::transValue(0); // 'request success' RequestCode::transValue(9); // 9 // Some Getter methods. RequestCode::getMap(); // dump: [ 'SUCCESS' => 0, 'ERROR' => 1, ]; RequestCode::getNameMap(); // dump: [ 0 => 'SUCCESS', 1 => 'ERROR', ]; RequestCode::getDict(); // dump: [ 0 => 'request success', 1 => 'request failure', ]; RequestCode::getNameDict(); // dump: [ 'SUCCESS' => 'request success', 'ERROR' => 'request failure', ];
- 可实例化
<?php // create instance via value $requestSuccess = new RequestCode(0); $requestSuccess->getName(); // SUCCESS $requestSuccess->getValue(); // 0 // __toString echo $requestSuccess; // '0' // Same as Staticable use. // It is implemented in __call and __callStatic $requestSuccess->getNameDict(); // dump: [ 'SUCCESS' => 'request success', 'ERROR' => 'request failure', ]; // var_dump($requestSuccess) object(RequestCode) protected 'name' => string 'SUCCESS' protected 'value' => int 0