Move Enum base class to App\Interfaces

This commit is contained in:
Nabeel Shahzad
2018-03-18 21:24:41 -05:00
parent 36ea12e135
commit 04c5b9e7bf
17 changed files with 54 additions and 16 deletions

View File

@@ -2,6 +2,8 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class AcarsType
* @package App\Models\Enums

View File

@@ -2,6 +2,8 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class ActiveState
* @package App\Models\Enums

View File

@@ -2,6 +2,8 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class AircraftState
* @package App\Models\Enums

View File

@@ -2,6 +2,8 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class AircraftState
* @package App\Models\Enums

View File

@@ -2,11 +2,13 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class AnalyticsDimensions
* @package App\Models\Enums
*/
class AnalyticsDimensions
class AnalyticsDimensions extends Enum
{
public const PHP_VERSION = 1;
public const DATABASE_VERSION = 2;

View File

@@ -2,11 +2,13 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class AnalyticsMetrics
* @package App\Models\Enums
*/
class AnalyticsMetrics
class AnalyticsMetrics extends Enum
{
# Track the lookup time for airports from vaCentral
public const AIRPORT_LOOKUP_TIME = 1;

View File

@@ -1,10 +1,9 @@
<?php
/**
*
*/
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class Days
* @package App\Models\Enums

View File

@@ -1,89 +0,0 @@
<?php
namespace App\Models\Enums;
/**
* Class EnumBase
* @package App\Models\Enums
*/
abstract class Enum
{
protected static $labels = [];
protected static $cache = [];
/**
* Return the label, try to return the translated version as well
* @param $value
* @return mixed
*/
public static function label($value) {
if(isset(static::$labels[$value])) {
return trans(static::$labels[$value]);
}
}
/**
* Return all of the (translated) labels
*/
public static function labels()
{
$labels = [];
foreach(static::$labels as $key => $label) {
$labels[$key] = trans($label);
}
return $labels;
}
/**
* Select box
*/
public static function select($add_blank=false)
{
$labels = [];
if($add_blank) {
$labels[] = '';
}
foreach (static::$labels as $key => $label) {
$labels[$key] = trans($label);
}
return $labels;
}
/**
* Returns all possible values as an array
* @return array Constant name in key, constant value in value
* @throws \ReflectionException
*/
public static function toArray()
{
$class = get_called_class();
if (!array_key_exists($class, static::$cache)) {
$reflection = new \ReflectionClass($class);
static::$cache[$class] = $reflection->getConstants();
}
return static::$cache[$class];
}
/**
* Returns a value when called statically like so: MyEnum::SOME_VALUE() given SOME_VALUE is a class constant
* @param string $name
* @param array $arguments
* @return static
* @throws \BadMethodCallException
* @throws \ReflectionException
*/
public static function __callStatic($name, $arguments)
{
$array = static::toArray();
if (isset($array[$name])) {
return new static($array[$name]);
}
throw new \BadMethodCallException(
"No static method or enum constant '$name' in class ".get_called_class()
);
}
}

View File

@@ -2,6 +2,8 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class ExpenseType
* @package App\Models\Enums

View File

@@ -2,7 +2,12 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class FlightType
* @package App\Models\Enums
*/
class FlightType extends Enum {
public const PASSENGER = 0;

View File

@@ -2,6 +2,12 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class FuelType
* @package App\Models\Enums
*/
class FuelType extends Enum {
public const LOW_LEAD = 0;

View File

@@ -2,6 +2,8 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class AcarsType
* @package App\Models\Enums

View File

@@ -1,10 +1,8 @@
<?php
/**
* The types of navaids
*/
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class NavaidType
* Types based on/compatible with OpenFMC

View File

@@ -2,6 +2,12 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class PirepSource
* @package App\Models\Enums
*/
class PirepSource extends Enum
{
public const MANUAL = 0;

View File

@@ -2,6 +2,12 @@
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class PirepState
* @package App\Models\Enums
*/
class PirepState extends Enum {
public const REJECTED = -1;

View File

@@ -1,10 +1,9 @@
<?php
/**
* Enums for PIREP statuses
*/
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Tied to the ACARS statuses/states
* Class PirepStatus

View File

@@ -1,10 +1,13 @@
<?php
/**
* Hold the user states
*/
namespace App\Models\Enums;
use App\Interfaces\Enum;
/**
* Class UserState
* @package App\Models\Enums
*/
class UserState extends Enum
{
public const PENDING = 0;