Files
animethemes-server/app/Rules/Api/EnumLocalizedNameRule.php
T
paranarimasu 6015dcbbbf refactor: migration from laravel-enum package to native php enums (#585)
* refactor: migration from laravel-enum package to native php enums

* style: fix StyleCI findings
2023-06-09 14:29:10 -05:00

46 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Rules\Api;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Translation\PotentiallyTranslatedString;
/**
* Class EnumLocalizedNameRule.
*/
readonly class EnumLocalizedNameRule implements ValidationRule
{
/**
* Create a new rule instance.
*
* @param class-string $enumClass
* @return void
*/
public function __construct(protected string $enumClass)
{
}
/**
* Run the validation rule.
*
* @param string $attribute
* @param mixed $value
* @param Closure(string): PotentiallyTranslatedString $fail
* @return void
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if (
! is_string($value)
|| ! enum_exists($this->enumClass)
|| ! method_exists($this->enumClass, 'fromLocalizedName')
|| $this->enumClass::fromLocalizedName($value) === null
) {
$fail(__('validation.enum'));
}
}
}