Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php namespace Illuminate\Validation\Rules; use Illuminate\Contracts\Validation\Rule; u..
Decoded Output download
<?php
namespace Illuminate\Validation\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Contracts\Validation\ValidatorAwareRule;
use Illuminate\Support\Arr;
use Illuminate\Support\Traits\Conditionable;
use TypeError;
class Enum implements Rule, ValidatorAwareRule
{
use Conditionable;
/**
* The type of the enum.
*
* @var class-string
*/
protected $type;
/**
* The current validator instance.
*
* @var \Illuminate\Validation\Validator
*/
protected $validator;
/**
* The cases that should be considered valid.
*
* @var array
*/
protected $only = [];
/**
* The cases that should be considered invalid.
*
* @var array
*/
protected $except = [];
/**
* Create a new rule instance.
*
* @param class-string $type
* @return void
*/
public function __construct($type)
{
$this->type = $type;
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if ($value instanceof $this->type) {
return $this->isDesirable($value);
}
if (is_null($value) || ! enum_exists($this->type) || ! method_exists($this->type, 'tryFrom')) {
return false;
}
try {
$value = $this->type::tryFrom($value);
return ! is_null($value) && $this->isDesirable($value);
} catch (TypeError) {
return false;
}
}
/**
* Specify the cases that should be considered valid.
*
* @param \UnitEnum[]|\UnitEnum $values
* @return $this
*/
public function only($values)
{
$this->only = Arr::wrap($values);
return $this;
}
/**
* Specify the cases that should be considered invalid.
*
* @param \UnitEnum[]|\UnitEnum $values
* @return $this
*/
public function except($values)
{
$this->except = Arr::wrap($values);
return $this;
}
/**
* Determine if the given case is a valid case based on the only / except values.
*
* @param mixed $value
* @return bool
*/
protected function isDesirable($value)
{
return match (true) {
! empty($this->only) => in_array(needle: $value, haystack: $this->only, strict: true),
! empty($this->except) => ! in_array(needle: $value, haystack: $this->except, strict: true),
default => true,
};
}
/**
* Get the validation error message.
*
* @return array
*/
public function message()
{
$message = $this->validator->getTranslator()->get('validation.enum');
return $message === 'validation.enum'
? ['The selected :attribute is invalid.']
: $message;
}
/**
* Set the current validator.
*
* @param \Illuminate\Validation\Validator $validator
* @return $this
*/
public function setValidator($validator)
{
$this->validator = $validator;
return $this;
}
}
?>
Did this file decode correctly?
Original Code
<?php
namespace Illuminate\Validation\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Contracts\Validation\ValidatorAwareRule;
use Illuminate\Support\Arr;
use Illuminate\Support\Traits\Conditionable;
use TypeError;
class Enum implements Rule, ValidatorAwareRule
{
use Conditionable;
/**
* The type of the enum.
*
* @var class-string
*/
protected $type;
/**
* The current validator instance.
*
* @var \Illuminate\Validation\Validator
*/
protected $validator;
/**
* The cases that should be considered valid.
*
* @var array
*/
protected $only = [];
/**
* The cases that should be considered invalid.
*
* @var array
*/
protected $except = [];
/**
* Create a new rule instance.
*
* @param class-string $type
* @return void
*/
public function __construct($type)
{
$this->type = $type;
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if ($value instanceof $this->type) {
return $this->isDesirable($value);
}
if (is_null($value) || ! enum_exists($this->type) || ! method_exists($this->type, 'tryFrom')) {
return false;
}
try {
$value = $this->type::tryFrom($value);
return ! is_null($value) && $this->isDesirable($value);
} catch (TypeError) {
return false;
}
}
/**
* Specify the cases that should be considered valid.
*
* @param \UnitEnum[]|\UnitEnum $values
* @return $this
*/
public function only($values)
{
$this->only = Arr::wrap($values);
return $this;
}
/**
* Specify the cases that should be considered invalid.
*
* @param \UnitEnum[]|\UnitEnum $values
* @return $this
*/
public function except($values)
{
$this->except = Arr::wrap($values);
return $this;
}
/**
* Determine if the given case is a valid case based on the only / except values.
*
* @param mixed $value
* @return bool
*/
protected function isDesirable($value)
{
return match (true) {
! empty($this->only) => in_array(needle: $value, haystack: $this->only, strict: true),
! empty($this->except) => ! in_array(needle: $value, haystack: $this->except, strict: true),
default => true,
};
}
/**
* Get the validation error message.
*
* @return array
*/
public function message()
{
$message = $this->validator->getTranslator()->get('validation.enum');
return $message === 'validation.enum'
? ['The selected :attribute is invalid.']
: $message;
}
/**
* Set the current validator.
*
* @param \Illuminate\Validation\Validator $validator
* @return $this
*/
public function setValidator($validator)
{
$this->validator = $validator;
return $this;
}
}
Function Calls
None |
Stats
MD5 | eabe8b82ea0cc72d44daf58bce5477ab |
Eval Count | 0 |
Decode Time | 104 ms |