Base Enum routable bump to version 2.0.0
This commit is contained in:
parent
1d4439d82b
commit
036cc602c0
3 changed files with 80 additions and 60 deletions
|
|
@ -2,6 +2,7 @@
|
|||
"name": "kwaadpepper/enum",
|
||||
"description": "Enums to use for any project",
|
||||
"license": "MIT",
|
||||
"version": "2.0.0",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jérémy Munsch",
|
||||
|
|
|
|||
|
|
@ -4,16 +4,14 @@ namespace Kwaadpepper\Enum;
|
|||
|
||||
use BadMethodCallException;
|
||||
use Closure;
|
||||
use Illuminate\Contracts\Routing\UrlRoutable;
|
||||
use JsonSerializable;
|
||||
use Kwaadpepper\Enum\Exceptions\DuplicateLabelsException;
|
||||
use Kwaadpepper\Enum\Exceptions\DuplicateValuesException;
|
||||
use Kwaadpepper\Enum\Exceptions\NotImplementedException;
|
||||
use Kwaadpepper\Enum\Exceptions\UnknownEnumProperty;
|
||||
use ReflectionClass;
|
||||
use TypeError;
|
||||
|
||||
abstract class BaseEnum implements JsonSerializable, UrlRoutable
|
||||
abstract class BaseEnum implements JsonSerializable
|
||||
{
|
||||
/**
|
||||
* @var string|int
|
||||
|
|
@ -278,63 +276,6 @@ abstract class BaseEnum implements JsonSerializable, UrlRoutable
|
|||
return (string) $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of the model's route key.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getRouteKey()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the route key for the model.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRouteKeyName()
|
||||
{
|
||||
throw new NotImplementedException('getRouteKeyName not implemented, should not be used');
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the model for a bound value.
|
||||
*
|
||||
* @param mixed $value
|
||||
* @param string|null $field
|
||||
* @return \Illuminate\Database\Eloquent\Model|null
|
||||
*/
|
||||
public function resolveRouteBinding($value, $field = null)
|
||||
{
|
||||
// try to cast numeric value first
|
||||
try {
|
||||
return static::make(is_numeric($value) ? intval($value) : $value);
|
||||
} catch (BadMethodCallException $e) {
|
||||
}
|
||||
// try string value after that
|
||||
try {
|
||||
return static::make($value);
|
||||
} catch (BadMethodCallException $e) {
|
||||
}
|
||||
// could not find a suitable value
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the child model for a bound value.
|
||||
*
|
||||
* @param string $childType
|
||||
* @param mixed $value
|
||||
* @param string|null $field
|
||||
* @return \Illuminate\Database\Eloquent\Model|null
|
||||
* @throws NotImplementedException
|
||||
*/
|
||||
public function resolveChildRouteBinding($childType, $value, $field)
|
||||
{
|
||||
throw new NotImplementedException('resolveChildRouteBinding not implemented, should not be used');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Enum name from class name
|
||||
*
|
||||
|
|
|
|||
78
src/BaseEnumRoutable.php
Normal file
78
src/BaseEnumRoutable.php
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
|
||||
namespace Kwaadpepper\Enum;
|
||||
|
||||
use BadMethodCallException;
|
||||
use Illuminate\Contracts\Routing\UrlRoutable;
|
||||
use Kwaadpepper\Enum\Exceptions\NotImplementedException;
|
||||
|
||||
abstract class BaseEnumRoutable extends BaseEnum implements UrlRoutable
|
||||
{
|
||||
/**
|
||||
* Get the value of the model's route key.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getRouteKey()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the route key for the model.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRouteKeyName()
|
||||
{
|
||||
throw new NotImplementedException('getRouteKeyName not implemented, should not be used');
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the model for a bound value.
|
||||
*
|
||||
* @param mixed $value
|
||||
* @param string|null $field
|
||||
* @return \Illuminate\Database\Eloquent\Model|null
|
||||
*/
|
||||
public function resolveRouteBinding($value, $field = null)
|
||||
{
|
||||
// try to cast numeric value first
|
||||
try {
|
||||
return static::make(is_numeric($value) ? intval($value) : $value);
|
||||
} catch (BadMethodCallException $e) {
|
||||
}
|
||||
// try string value after that
|
||||
try {
|
||||
return static::make($value);
|
||||
} catch (BadMethodCallException $e) {
|
||||
}
|
||||
// could not find a suitable value
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the child model for a bound value.
|
||||
*
|
||||
* @param string $childType
|
||||
* @param mixed $value
|
||||
* @param string|null $field
|
||||
* @return \Illuminate\Database\Eloquent\Model|null
|
||||
* @throws NotImplementedException
|
||||
*/
|
||||
public function resolveChildRouteBinding($childType, $value, $field)
|
||||
{
|
||||
throw new NotImplementedException('resolveChildRouteBinding not implemented, should not be used');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Enum name from class name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getEnumName()
|
||||
{
|
||||
$cls = explode('\\', static::class);
|
||||
return array_pop($cls);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue