xakepehok / enum-helper
枚举辅助工具,包含switch-case替代方案等更多功能
0.1.2
2022-07-06 17:50 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-06 23:01:48 UTC
README
\XAKEPEHOK\EnumHelper\EnumHelper
- 辅助工具,可以帮助您使用枚举值(值对象),提供一些有用的函数,例如switch-case、保护无效值、获取所有值或不要忘记将所有枚举值用作某些数组键
用法
定义您的枚举类,例如,定义值对象类 Status
(值对象不是必需的,您不能定义构造函数和getter,并可以将您的类用作简单的辅助工具,但在很多情况下非常有用)
<?php class Status extends \XAKEPEHOK\EnumHelper\EnumHelper { const STATUS_PROCESSING = 'processing'; const STATUS_APPROVED = 'approved'; const STATUS_CANCELED = 'canceled'; private $status; public function __construct($status) { self::guardValidValue($status); $this->status = $status; } public function getStatus() { return $this->status; } public static function values() : array{ return [ self::STATUS_PROCESSING, self::STATUS_APPROVED, self::STATUS_CANCELED, ]; } }
之后,您可以使用您的 Status
对象作为您的领域类型。但这个辅助工具提供更多功能。
switch case
您可能很容易忘记在原生PHP switch-case中使用您的一个状态。我们的辅助工具提供替代的switch-case方法
<?php $statusValue = Status::STATUS_PROCESSING; $result = Status::switchCase($statusValue, [ Status::STATUS_PROCESSING => function ($case) { //doSomethins(); return null; // }, Status::STATUS_APPROVED => function ($case) { return true; }, Status::STATUS_CANCELED => false, ]);
在这个函数中,您应该提供所有您的枚举值作为键(如果您忘记了某些内容,将抛出异常 \XAKEPEHOK\EnumHelper\Exception\ForgottenSwitchCaseException
),并使用值或可调用作为结果。有关更多详细信息,请参阅 EnumHelper 代码
关联
可以帮助您定义具有枚举作为数组键的关联数组。如果您忘记了某些内容,将抛出异常 \XAKEPEHOK\EnumHelper\Exception\NotEqualsAssociationException`
<?php $array = Status::associative([ Status::STATUS_PROCESSING => 0, Status::STATUS_APPROVED => 1, Status::STATUS_CANCELED => -1, ]);
是否有效
<?php Status::isVlaid(Status::STATUS_PROCESSING); //true Status::isVlaid('qwerty'); //false
保护有效值
如果传递的值不是枚举值,则抛出异常 \XAKEPEHOK\EnumHelper\Exception\OutOfEnumException
<?php Status::guardValidValue(Status::STATUS_PROCESSING); //OK Status::guardValidValue('qwerty'); //throw exception