File "EnsurePropertyMorphable.php"

Full Path: /var/www/html/back/vendor/spatie/laravel-data/src/Support/Validation/EnsurePropertyMorphable.php
File size: 1.03 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Spatie\LaravelData\Support\Validation;

use Closure;
use Exception;
use Illuminate\Contracts\Validation\ValidationRule;
use Spatie\LaravelData\Attributes\Validation\ObjectValidationAttribute;
use Spatie\LaravelData\Support\DataClass;

class EnsurePropertyMorphable extends ObjectValidationAttribute implements ValidationRule
{
    public function __construct(protected DataClass $dataClass)
    {
    }

    public function getRule(ValidationPath $path): object|string
    {
        return $this;
    }

    public static function keyword(): string
    {
        return 'requires_property_morphable_class';
    }

    public static function create(string ...$parameters): static
    {
        throw new Exception('Cannot create a requires property morphable class rule');
    }

    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        if (! $this->dataClass->propertyMorphable || $this->dataClass->isAbstract) {
            $fail('The selected :attribute is invalid for morph.');
        }
    }
}