skywalker-labs/enum
Composer 安装命令:
composer require skywalker-labs/enum
包简介
A robust and type-safe Enum implementation for PHP, featuring singleton-based constants, mapping capabilities, and extensive compatibility from PHP 7.0 to 9.0.
README 文档
README
A robust, type-safe, and singleton-based Enum implementation for PHP.
This library provides a clean way to implement enums in PHP, ensuring that each enum value is a unique singleton instance. It works across PHP versions from 7.0 to 9.0+.
Installation
Install the package via Composer:
composer require skywalker-labs/enum
Basic Usage
To create an enum, extend Skywalker\Enum\AbstractEnum and define your constants as protected const.
use Skywalker\Enum\AbstractEnum; /** * @method static self MONDAY() * @method static self TUESDAY() * ... */ final class WeekDay extends AbstractEnum { protected const MONDAY = null; protected const TUESDAY = null; // ... }
Pro Features
1. Flexible JSON Serialization
Control how your enums appear in API responses.
// Choose between 'name', 'value', or 'object' AbstractEnum::$jsonMode = 'object'; echo json_encode(WeekDay::MONDAY()); // Output: {"name":"MONDAY","value":null,"label":"MONDAY","ordinal":0}
2. Native PHP Compatibility
Use aliases that match PHP 8.1+ native enums for a smoother transition.
$day = WeekDay::from('MONDAY'); // Throws exception if not found $day = WeekDay::tryFrom('INVALID'); // Returns null if not found
3. Randomization
Perfect for seeders and unit tests.
$randomDay = WeekDay::random();
4. String Helpers
echo WeekDay::MONDAY()->lowerName(); // "monday" echo WeekDay::MONDAY()->camelName(); // "Monday"
5. Collection Power-Ups (EnumSet)
Functional methods for modern collections.
$set = EnumSet::allOf(WeekDay::class); $weekends = $set->filter(fn($d) => $d->isAnyOf([WeekDay::SATURDAY(), WeekDay::SUNDAY()])); $names = $set->map(fn($d) => $d->name()); $first = $set->first(); // MONDAY $last = $set->last(); // SUNDAY
Ultimate Edition Features
1. Navigational Helpers
Sequence through your enums easily.
$day = WeekDay::MONDAY(); $next = $day->next(); // TUESDAY $prev = $day->previous(); // null if ($day->isBefore(WeekDay::FRIDAY())) { echo "Hang in there!"; }
2. Set Theory (EnumSet)
Perform mathematical set operations.
$workDays = EnumSet::range(WeekDay::MONDAY(), WeekDay::FRIDAY()); $holidays = EnumSet::of(WeekDay::class, WeekDay::MONDAY()); $actualWork = $workDays->diff($holidays); $allDays = $workDays->union($holidays); $intersect = $workDays->intersect($holidays); $restOfYear = $workDays->complement();
3. Tolerant Lookups
Handle user input with case-insensitivity.
$day = WeekDay::fromNameInsensitive('monday'); // Returns MONDAY instance
Advanced Features
Collection & UI Helpers
// Returns ['MONDAY' => 'MONDAY', 'TUESDAY' => 'TUESDAY', ...] $options = WeekDay::toArray();
Type-Safe Comparisons
if ($day->isAnyOf([WeekDay::SATURDAY(), WeekDay::SUNDAY()])) { echo "It's the weekend!"; }
Bitmask Support
Efficiently store multiple enum values in a single integer.
$mask = $set->toBitmask(); // integer e.g. 5 $restored = EnumSet::fromBitmask(WeekDay::class, $mask);
License
This project is licensed under the MIT License. See the LICENSE file for details.
skywalker-labs/enum 适用场景与选型建议
skywalker-labs/enum 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 1, 最近一次更新时间为 2026 年 02 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「map」 「enum」 「singleton」 「compatibility」 「constants」 「php-enum」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 skywalker-labs/enum 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 skywalker-labs/enum 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 skywalker-labs/enum 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Maps in minutes. Powered by the Google Maps API.
Enum type behavior for Yii2 based on class constants
Yii2 map input widget. Allows you to select geographcal coordinates via a human-friendly inteface.
A PHP Abstract Enum Class
Compatibility layer for emulating enumerations in PHP < 8.1 and native enumerations in PHP >= 8.1
Enum type behavior and helper for Yii2, for PostgreSQL only
统计信息
- 总下载量: 2
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 33
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-15