ldc-enum/src/Rules/BaseEnumRule.php

46 lines
1 KiB
PHP
Raw Normal View History

2021-03-17 00:52:03 +01:00
<?php
namespace Kwaadpepper\Enum\Rules;
use Illuminate\Contracts\Validation\Rule;
use Kwaadpepper\Enum\BaseEnum;
2021-03-17 00:52:03 +01:00
use Kwaadpepper\Enum\Exceptions\UnknownEnumClass;
abstract class BaseEnumRule implements Rule
{
2021-09-11 11:11:21 +02:00
2021-03-17 00:52:03 +01:00
/** @var string $enum */
protected $enumClass;
/**
* Create a new rule instance
* which validate the fact that a value is within an Enum
*
* @param string $enumClass
* @return void
*/
public function __construct(string $enumClass)
{
if (!class_exists($enumClass) or !is_subclass_of($enumClass, BaseEnum::class)) {
2021-03-17 00:52:03 +01:00
throw new UnknownEnumClass();
}
$this->enumClass = $enumClass;
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
abstract public function passes($attribute, $value): bool;
2021-09-11 11:11:21 +02:00
2021-03-17 00:52:03 +01:00
/**
* Get the validation error message.
*
* @return string
*/
abstract public function message(): string;
}