tleckie/enum

PHP 枚举。使用枚举的一个优点是能够将枚举用作参数类型,而不是类常量。

1.0.2 2021-05-01 11:21 UTC

This package is auto-updated.

Last update: 2024-09-13 15:37:50 UTC


README

Latest Version on Packagist Scrutinizer Code Quality Build Status Total Downloads Code Intelligence Status

PHP中的枚举器

安装

您可以通过composer安装此包。

composer require tleckie/enum

用法

扩展Enum类并创建自己的类型。

<?php

/**
 * Class Vehicle
 *
 * @method static Vehicle CAR()
 * @method static Vehicle MOTORCYCLE()
 * @method static Vehicle BIKE()
 * @method static Vehicle TRICYCLE()
 * 
 * @author Teodoro Leckie Westberg <teodoroleckie@gmail.com>
 */
class Vehicle extends Enum 
{
    public const CAR = 1;
    public const MOTORCYCLE = 2;
    public const BIKE = 3;
    public const TRICYCLE = 4;
}

$vehicle = new Vehicle(3);

// Dynamic static methods available
$vehicle::CAR();           // new Vehicle(1)
$vehicle::MOTORCYCLE();    // new Vehicle(2)
$vehicle::BIKE();          // new Vehicle(3)
$vehicle::TRICYCLE();      // new Vehicle(4)
.
.
.
Vehicle::CAR();           // new Vehicle(1)
Vehicle::MOTORCYCLE();    // new Vehicle(2)
Vehicle::BIKE();          // new Vehicle(3)
Vehicle::TRICYCLE();      // new Vehicle(4)
public function edit(Vehicle $vehicle){
    //...
}

$object->edit(Vehicle::CAR());
$vehicle = new Vehicle(3);

$vehicle->getValue();  // int(3)
$vehicle->getKey();    // "BIKE"

getValues()

$vehicle = new Vehicle(3);
$vehicle->getValues(); // [1,2,3,4]

getKeys()

$vehicle = new Vehicle(3);
$vehicle->getKeys();    //["CAR","MOTORCYCLE","BIKE","TRICYCLE"]

toArray()

$vehicle = new Vehicle(3);
$vehicle->toArray();   //["CAR" => 1,"MOTORCYCLE" => 2,"BIKE" => 3,"TRICYCLE" => 4]

字符串转换

(string) Vehicle::MOTORCYCLE();             // "2"
(string) new Vehicle(3);                    // "3"
(string) new Vehicle( Vehicle::TRICYCLE() );// "4"
(string) new Vehicle( new Vehicle(1) );     // "1"