tenthfeet/enums
最新稳定版本:v1.0.0
Composer 安装命令:
composer require tenthfeet/enums
包简介
Helpers for PHP enums
README 文档
README
A lightweight PHP trait that adds powerful, type-safe helper methods to PHP 8.1+ enums. Designed for pure PHP projects, with seamless compatibility for frameworks such as Laravel, Symfony, or Slim.
Requirements
-
PHP 8.1 or higher
-
Native PHP enums (PureEnum, BackedEnum)
No external dependencies.
Installation
Via Composer (recommended)
composer require tenthfeet/enums
Usage/Examples
1.Add the trait to your enum
use Tenthfeet\Enums\Traits\InteractWithCases; enum Status { use InteractWithCases; case Active; case Inactive; }
For backed enums:
use Tenthfeet\Enums\Traits\InteractWithCases; enum PaymentStatus: int { use InteractWithCases; case Pending = 1; case Paid = 2; }
Instance Methods
is() / isNot()
Strict identity comparison between enum cases.
Status::Active->is(Status::Active); // true Status::Active->is(Status::Inactive); // false Status::Active->isNot(Status::Inactive); // true
in() / notIn()
Check if an enum exists within an iterable collection.
Status::Active->in([Status::Inactive, Status::Active]); // true Status::Active->notIn([Status::Inactive]); // true
-
Ignores non-enum values safely
-
Uses strict enum identity comparison
__invoke()
Calling an enum case as a function returns:
-
the value for backed enums
-
the name for pure enums
Status::Active(); // "Active" PaymentStatus::Paid(); // 2
Static Methods
names()
Returns all enum case names.
Status::names(); // ["Active", "Inactive"]
values()
Returns:
-
enum values for backed enums
-
enum names for pure enums
PaymentStatus::values(); // [1, 2] Status::values(); // ["Active", "Inactive"]
options()
Generates a standardized array of options, ideal for:
-
HTML select inputs
-
API responses
-
Frontend frameworks
Status::options(); // Output [ ['id' => 'Active', 'text' => 'Active'], ['id' => 'Inactive', 'text' => 'Inactive'], ]
Using a custom label method
enum PaymentStatus: int { use InteractWithCases; case Pending = 1; case Paid = 2; public function label(): string { return match ($this) { self::Pending => 'Not Received', self::Paid => 'Received', }; } } PaymentStatus::options('label'); // Output [ ['id' => 1, 'text' => 'Not Received'], ['id' => 2, 'text' => 'Received'], ]
Custom keys
PaymentStatus::options(property: 'label', valueKey: 'value', nameKey: 'label'); // Output [ ['value' => 1, 'label' => 'Not Received'], ['value' => 2, 'label' => 'Received'], ]
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-03