Repository URL to install this package:
|
Version:
1.0.0 ▾
|
<?php
/**
* Created by PhpStorm.
* User: danilo
* Date: 02/10/15
* Time: 11:27
*/
namespace Modules\Core\Utils;
abstract class Enum
{
private static $constCacheArray = null;
public static function isValidName($name, $strict = false)
{
$constants = self::getConstants();
if ($strict) {
return array_key_exists($name, $constants);
}
$keys = array_map('strtolower', array_keys($constants));
return in_array(strtolower($name), $keys);
}
private static function getConstants()
{
if (self::$constCacheArray == null) {
self::$constCacheArray = [];
}
$calledClass = get_called_class();
if (!array_key_exists($calledClass, self::$constCacheArray)) {
$reflect = new \ReflectionClass($calledClass);
self::$constCacheArray[$calledClass] = $reflect->getConstants();
}
return self::$constCacheArray[$calledClass];
}
public static function isValidValue($value)
{
$values = array_values(self::getConstants());
return in_array($value, $values, true);
}
public static function toArray()
{
return self::getConstants();
}
public static function getName($id)
{
$data = self::toArrayFlip();
return isset($data[$id]) ? $data[$id] : '--';
}
public static function toArrayFlip()
{
return array_flip(self::getConstants());
}
}