定制 lucastuzina/laranums 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

lucastuzina/laranums

Composer 安装命令:

composer require lucastuzina/laranums

包简介

Provides a trait with useful utility methods for enums in Laravel

README 文档

README

Laranums is a Laravel package that turns PHP enums into a first-class, fully-featured domain primitive. One trait unlocks lookup, conversion, translations, attribute-driven UI metadata, navigation, filtering, comparison, ordering and more.

Packagist Downloads Version License

Installation

composer require lucastuzina/laranums

Quickstart

Drop the Laranum trait into any enum:

use Lucastuzina\Laranums\Laranum;

enum Status: string
{
    use Laranum;

    case Active   = 'active';
    case Inactive = 'inactive';
    case Pending  = 'pending';
}

Status::fromValue('active');             // Status::Active
Status::toSelectOptions();               // ['active' => 'Active', 'inactive' => 'Inactive', …]
Status::Active->next();                  // Status::Inactive
Status::Active->in([Status::Pending]);   // false

Documentation

Full docs live in the docs/ directory:

  • Case Attributes#[Label], #[Color], #[Icon], #[Description] plus label(), color(), icon(), description(), toSelectOptions().
  • Trait Methods — Every method the trait adds, organised by concern.
  • Utility Enums — Ready-to-use enums (Unit, HttpStatus, Day, Currency, Country, Language, …).
  • Laravel Integration — Validation rules, Faker provider, Eloquent query macros.
  • Artisan Command — Scaffold new enums with php artisan make:laranum.

Feature Overview

Case Attributes

Attach UI metadata directly to cases — no match statements, no framework lock-in.

use Lucastuzina\Laranums\Attributes\{Label, Color, Icon};

enum OrderStatus: string
{
    use Laranum;

    #[Label('Pending'), Color('yellow'), Icon('clock')]
    case PENDING = 'pending';

    #[Label('Paid'), Color('green'), Icon('check-circle')]
    case PAID = 'paid';
}

OrderStatus::PAID->color();   // 'green'
OrderStatus::toSelectOptions(); // ['pending' => 'Pending', 'paid' => 'Paid']

Full details

Method Cheatsheet

Concern Methods
Lookup fromName, fromValue, fromNameOrDefault, fromValueOrDefault, isValidName, isValidValue
Metadata className
Conversion toArray, toArrayReversed, names, values, collect
Translations trans, transNames, transValues
Attributes label, color, icon, description, toSelectOptions
Navigation first, last, count, at, index, next, previous
Filtering only, except, rand, random
Comparison is, in, notIn
Ordering compare, lessThan, greaterThan, between
JSON jsonSerialize
Validation rule, ruleOnly, ruleExcept

Full reference

Utility Enums

Ready-to-use, domain-neutral enums that ship with the full Laranum trait baked in.

Enum Purpose
Unit Length, weight, time, speed, temperature, … with built-in conversion.
HttpStatus IANA status codes with category helpers (isSuccess, isClientError, …).
HttpMethod isSafe, isIdempotent, hasRequestBody per RFC 7231.
Day ISO-8601 weekdays with isWeekday, isWeekend, short.
Month Leap-year-aware daysInMonth, quarter, short.
Quarter months(), firstMonth(), lastMonth().
Season Meteorological seasons with hemisphere support.
CardinalDirection 8-point compass with degrees, opposite, fromDegrees.
Continent Seven-continent model with ISO codes.
Currency ISO 4217 (~150 codes) with symbol, decimals, format.
Country All 249 ISO 3166-1 countries with alpha3, numeric, dialCode, continent, flag.
Language ISO 639-1 (~180 codes) with nativeName, isRtl.

Full details

Laravel Integration

  • Validation: OrderStatus::rule(), ::ruleOnly([...]), ::ruleExcept([...]) — returns Laravel's native Enum rule, drop straight into a FormRequest.
  • Faker: $faker->enum(OrderStatus::class) via LaranumFakerProvider.
  • Eloquent: Order::whereEnum('status', OrderStatus::PAID) and whereEnumNot, orWhereEnum macros — accept enum instances or arrays directly.

Full details

Artisan Command

php artisan make:laranum UserRole admin editor guest --type=string --lang=en,de

Scaffolds the enum and optional translation stubs under lang/{locale}/enums.php.

Full details

À la carte

If you don't want the whole trait, compose your own from the concerns under Lucastuzina\Laranums\Concerns\*:

use Lucastuzina\Laranums\Concerns\{HasLookup, HasAttributes};

enum MyEnum: string
{
    use HasLookup, HasAttributes;
    // ...
}

License

This package is open-sourced software licensed under the MIT license.

统计信息

  • 总下载量: 1.19k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-11-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固