Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Validation/Rule.php
Строк: 538
<?php

namespace IlluminateValidation;

use 
IlluminateContractsSupportArrayable;
use 
IlluminateSupportArr;
use 
IlluminateSupportTraitsMacroable;
use 
IlluminateValidationRulesAnyOf;
use 
IlluminateValidationRulesArrayRule;
use 
IlluminateValidationRulesCan;
use 
IlluminateValidationRulesDate;
use 
IlluminateValidationRulesDimensions;
use 
IlluminateValidationRulesEmail;
use 
IlluminateValidationRulesEnum;
use 
IlluminateValidationRulesExcludeIf;
use 
IlluminateValidationRulesExcludeUnless;
use 
IlluminateValidationRulesExists;
use 
IlluminateValidationRulesFile;
use 
IlluminateValidationRulesImageFile;
use 
IlluminateValidationRulesIn;
use 
IlluminateValidationRulesNotIn;
use 
IlluminateValidationRulesNumeric;
use 
IlluminateValidationRulesProhibitedIf;
use 
IlluminateValidationRulesProhibitedUnless;
use 
IlluminateValidationRulesRequiredIf;
use 
IlluminateValidationRulesRequiredUnless;
use 
IlluminateValidationRulesStringRule;
use 
IlluminateValidationRulesUnique;

class 
Rule
{
    use 
Macroable;

    
/**
     * Get a can constraint builder instance.
     *
     * @param  string  $ability
     * @param  mixed  ...$arguments
     * @return IlluminateValidationRulesCan
     */
    
public static function can($ability, ...$arguments)
    {
        return new 
Can($ability$arguments);
    }

    
/**
     * Apply the given rules if the given condition is truthy.
     *
     * @param  callable|bool  $condition
     * @param  IlluminateContractsValidationValidationRule|IlluminateContractsValidationInvokableRule|IlluminateContractsValidationRule|Closure|array|string  $rules
     * @param  IlluminateContractsValidationValidationRule|IlluminateContractsValidationInvokableRule|IlluminateContractsValidationRule|Closure|array|string  $defaultRules
     * @return IlluminateValidationConditionalRules
     */
    
public static function when($condition$rules$defaultRules = [])
    {
        return new 
ConditionalRules($condition$rules$defaultRules);
    }

    
/**
     * Apply the given rules if the given condition is falsy.
     *
     * @param  callable|bool  $condition
     * @param  IlluminateContractsValidationValidationRule|IlluminateContractsValidationInvokableRule|IlluminateContractsValidationRule|Closure|array|string  $rules
     * @param  IlluminateContractsValidationValidationRule|IlluminateContractsValidationInvokableRule|IlluminateContractsValidationRule|Closure|array|string  $defaultRules
     * @return IlluminateValidationConditionalRules
     */
    
public static function unless($condition$rules$defaultRules = [])
    {
        return new 
ConditionalRules($condition$defaultRules$rules);
    }

    
/**
     * Get an array rule builder instance.
     *
     * @param  array|null  $keys
     * @return IlluminateValidationRulesArrayRule
     */
    
public static function array($keys null)
    {
        return new 
ArrayRule(...func_get_args());
    }

    
/**
     * Create a new nested rule set.
     *
     * @param  callable  $callback
     * @return IlluminateValidationNestedRules
     */
    
public static function forEach($callback)
    {
        return new 
NestedRules($callback);
    }

    
/**
     * Get a unique constraint builder instance.
     *
     * @param  string  $table
     * @param  string  $column
     * @return IlluminateValidationRulesUnique
     */
    
public static function unique($table$column 'NULL')
    {
        return new 
Unique($table$column);
    }

    
/**
     * Get an exists constraint builder instance.
     *
     * @param  string  $table
     * @param  string  $column
     * @return IlluminateValidationRulesExists
     */
    
public static function exists($table$column 'NULL')
    {
        return new 
Exists($table$column);
    }

    
/**
     * Get an in rule builder instance.
     *
     * @param  IlluminateContractsSupportArrayable|UnitEnum|array|string  $values
     * @return IlluminateValidationRulesIn
     */
    
public static function in($values)
    {
        if (
$values instanceof Arrayable) {
            
$values $values->toArray();
        }

        return new 
In(is_array($values) ? $values func_get_args());
    }

    
/**
     * Get a not_in rule builder instance.
     *
     * @param  IlluminateContractsSupportArrayable|UnitEnum|array|string  $values
     * @return IlluminateValidationRulesNotIn
     */
    
public static function notIn($values)
    {
        if (
$values instanceof Arrayable) {
            
$values $values->toArray();
        }

        return new 
NotIn(is_array($values) ? $values func_get_args());
    }

    
/**
     * Get a required_if rule builder instance.
     *
     * @param  (Closure(): bool)|bool  $callback
     * @return IlluminateValidationRulesRequiredIf
     */
    
public static function requiredIf($callback)
    {
        return new 
RequiredIf($callback);
    }

    
/**
     * Get a required_unless rule builder instance.
     *
     * @param  (Closure(): bool)|bool|null  $callback
     * @return IlluminateValidationRulesRequiredUnless
     */
    
public static function requiredUnless($callback)
    {
        return new 
RequiredUnless($callback);
    }

    
/**
     * Get a exclude_if rule builder instance.
     *
     * @param  (Closure(): bool)|bool  $callback
     * @return IlluminateValidationRulesExcludeIf
     */
    
public static function excludeIf($callback)
    {
        return new 
ExcludeIf($callback);
    }

    
/**
     * Get a exclude_unless rule builder instance.
     *
     * @param  (Closure(): bool)|bool  $callback
     * @return IlluminateValidationRulesExcludeUnless
     */
    
public static function excludeUnless($callback)
    {
        return new 
ExcludeUnless($callback);
    }

    
/**
     * Get a prohibited_if rule builder instance.
     *
     * @param  (Closure(): bool)|bool  $callback
     * @return IlluminateValidationRulesProhibitedIf
     */
    
public static function prohibitedIf($callback)
    {
        return new 
ProhibitedIf($callback);
    }

    
/**
     * Get a prohibited_unless rule builder instance.
     *
     * @param  (Closure(): bool)|bool  $callback
     * @return IlluminateValidationRulesProhibitedUnless
     */
    
public static function prohibitedUnless($callback)
    {
        return new 
ProhibitedUnless($callback);
    }

    
/**
     * Get a date rule builder instance.
     *
     * @return IlluminateValidationRulesDate
     */
    
public static function date()
    {
        return new 
Date;
    }

    
/**
     * Get a datetime rule builder instance.
     */
    
public static function dateTime(): Date
    
{
        return (new 
Date)->format('Y-m-d H:i:s');
    }

    
/**
     * Get an email rule builder instance.
     *
     * @return IlluminateValidationRulesEmail
     */
    
public static function email()
    {
        return new 
Email;
    }

    
/**
     * Get an enum rule builder instance.
     *
     * @param  class-string  $type
     * @return IlluminateValidationRulesEnum
     */
    
public static function enum($type)
    {
        return new 
Enum($type);
    }

    
/**
     * Get a file rule builder instance.
     *
     * @return IlluminateValidationRulesFile
     */
    
public static function file()
    {
        return new 
File;
    }

    
/**
     * Get an image file rule builder instance.
     *
     * @param  bool  $allowSvg
     * @return IlluminateValidationRulesImageFile
     */
    
public static function imageFile($allowSvg false)
    {
        return new 
ImageFile($allowSvg);
    }

    
/**
     * Get a dimensions rule builder instance.
     *
     * @param  array  $constraints
     * @return IlluminateValidationRulesDimensions
     */
    
public static function dimensions(array $constraints = [])
    {
        return new 
Dimensions($constraints);
    }

    
/**
     * Get a string rule builder instance.
     *
     * @return IlluminateValidationRulesStringRule
     */
    
public static function string()
    {
        return new 
StringRule;
    }

    
/**
     * Get a numeric rule builder instance.
     *
     * @return IlluminateValidationRulesNumeric
     */
    
public static function numeric()
    {
        return new 
Numeric;
    }

    
/**
     * Get an "any of" rule builder instance.
     *
     * @param  array  $rules
     * @return IlluminateValidationRulesAnyOf
     *
     * @throws InvalidArgumentException
     */
    
public static function anyOf($rules)
    {
        return new 
AnyOf($rules);
    }

    
/**
     * Get a contains rule builder instance.
     *
     * @param  IlluminateContractsSupportArrayable|UnitEnum|array|string  $values
     * @return IlluminateValidationRulesContains
     */
    
public static function contains($values)
    {
        if (
$values instanceof Arrayable) {
            
$values $values->toArray();
        }

        return new 
RulesContains(is_array($values) ? $values func_get_args());
    }

    
/**
     * Get a "does not contain" rule builder instance.
     *
     * @param  IlluminateContractsSupportArrayable|UnitEnum|array|string  $values
     * @return IlluminateValidationRulesDoesntContain
     */
    
public static function doesntContain($values)
    {
        if (
$values instanceof Arrayable) {
            
$values $values->toArray();
        }

        return new 
RulesDoesntContain(is_array($values) ? $values func_get_args());
    }

    
/**
     * Compile a set of rules for an attribute.
     *
     * @param  string  $attribute
     * @param  array  $rules
     * @param  array|null  $data
     * @return object|stdClass
     */
    
public static function compile($attribute$rules$data null)
    {
        
$parser = new ValidationRuleParser(
            
Arr::undot(Arr::wrap($data))
        );

        if (
is_array($rules) && ! array_is_list($rules)) {
            
$nested = [];

            foreach (
$rules as $key => $rule) {
                
$nested[$attribute.'.'.$key] = $rule;
            }

            
$rules $nested;
        } else {
            
$rules = [$attribute => $rules];
        }

        return 
$parser->explode(ValidationRuleParser::filterConditionalRules($rules$data));
    }
}
Онлайн: 1
Реклама