Created
February 21, 2022 09:12
-
-
Save syofyanzuhad/8e84699fe160d42da95206ad8fa342a4 to your computer and use it in GitHub Desktop.
Controller to handle API for your enum
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers; | |
use BenSampo\Enum\Enum; | |
use Illuminate\Http\Request; | |
class EnumController extends Controller | |
{ | |
/** | |
* Handle the incoming request. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\JsonResponse | |
*/ | |
public function __invoke(Request $request, $enum) | |
{ | |
$enumType = ucwords(str_replace('-', ' ', $enum)); | |
//remove all white spaces | |
$enumType = preg_replace('/\s+/', '', $enumType); | |
//check if the enum type exists | |
$enumClass = "App\Enums\\$enumType"; | |
if (! class_exists($enumClass)) { | |
return response()->json([ | |
'message' => $enumType.' Enum type not found', | |
], 404); | |
} | |
// check if the enum type is a class | |
if (! is_subclass_of($enumClass, Enum::class)) { | |
return response()->json([ | |
'message' => $enumType.' Enum type is not a class', | |
], 404); | |
} else { | |
$enumValues = []; | |
foreach (call_user_func("App\Enums\\{$enumType}::getValues") as $value) { | |
$enumValues[] = [ | |
'value' => $value, | |
]; | |
} | |
return $this->successResponse($enumValues); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment