- Type-hint:
function someAction(Action $action) {
- No magick methods or phpdoc comments, only raw enum values
- List of all the possible values
- Own fields or methods in enums
composer require palabs/php-enum
use PaLabs\Enum\Enum;
class Action extends Enum
{
public static Action $VIEW, $EDIT;
}
Action::init();
That's all!
function someAction(Action $action) {
switch($action) {
case Action::$VIEW:
// some code
break;
case Action::$EDIT:
// another code
break;
default:
// ...
break;
}
}
$viewAction = Action::$VIEW;
if($viewAction->equals(ACTION::$EDIT)) {
// ...
}
$allActions = Action::values();
use PaLabs\Enum\Enum;
class Planet extends Enum
{
public static Planet
$MERCURY,
$VENUS,
$EARTH,
$MARS,
$JUPITER,
$SATURN,
$URANUS,
$NEPTUNE;
private float $mass; // in kilograms
private float $radius; // in meters
public function __construct(float $mass, float $radius) {
$this->mass = $mass;
$this->radius = $radius;
}
private const G = 6.67300E-11;
public function surfaceGravity(): float {
return self::G * $this->mass / ($this->radius * $this->radius);
}
public function surfaceWeight(float $otherMass): float {
return $otherMass * $this->surfaceGravity();
}
}
Planet::$MERCURY = new Planet(3.303e+23, 2.4397e6);
Planet::$VENUS = new Planet(4.869e+24, 6.0518e6);
Planet::$EARTH = new Planet(5.976e+24, 6.37814e6);
Planet::$MARS = new Planet(6.421e+23, 3.3972e6);
Planet::$JUPITER = new Planet(1.9e+27, 7.1492e7);
Planet::$SATURN = new Planet(5.688e+26, 6.0268e7);
Planet::$URANUS = new Planet(8.686e+25, 2.5559e7);
Planet::$NEPTUNE = new Planet(1.024e+26, 2.4746e7);
Planet::init();
$yourEarthWeight = 65.0;
$mass = $yourEarthWeight / Planet::$EARTH->surfaceGravity();
foreach (Planet::values() as $planet) {
sprintf("Your weight on %s is %f%n", $planet->name(), $planet->surfaceWeight($mass));
}
name()
Returns name of the current enum instance (e.g. 'VIEW' for Action::$VIEW)ordinal()
Returns ordinal number of enum instance in all enum instance start with 0. E.g. 0 for Action::$VIEW, 1 for Action::$EDITequals(Enum $other)
- Tests whether enum instances are equal or not
values()
Returns all enum instancesvalueOf(string $name)
Return enum instance for given name or throwing exception if no enum instance foundinit()
- Initialize enum (filling enum instances). Need to be called after enum declaration