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

namespace IlluminateHttpConcerns;

use 
IlluminateHttpUploadedFile;
use 
IlluminateSupportArr;
use 
IlluminateSupportFluent;
use 
IlluminateSupportTraitsDumpable;
use 
IlluminateSupportTraitsInteractsWithData;
use 
SplFileInfo;
use 
SymfonyComponentHttpFoundationInputBag;

trait 
InteractsWithInput
{
    use 
DumpableInteractsWithData;

    
/**
     * Retrieve a server variable from the request.
     *
     * @param  string|null  $key
     * @param  string|array|null  $default
     * @return string|array|null
     */
    
public function server($key null$default null)
    {
        return 
$this->retrieveItem('server'$key$default);
    }

    
/**
     * Determine if a header is set on the request.
     *
     * @param  string  $key
     * @return bool
     */
    
public function hasHeader($key)
    {
        return ! 
is_null($this->header($key));
    }

    
/**
     * Retrieve a header from the request.
     *
     * @param  string|null  $key
     * @param  string|array|null  $default
     * @return string|array|null
     */
    
public function header($key null$default null)
    {
        return 
$this->retrieveItem('headers'$key$default);
    }

    
/**
     * Get the bearer token from the request headers.
     *
     * @return string|null
     */
    
public function bearerToken()
    {
        
$header $this->header('Authorization''');

        
$position strripos($header'Bearer ');

        if (
$position !== false) {
            
$header substr($header$position 7);

            return 
str_contains($header',') ? strstr($header','true) : $header;
        }
    }

    
/**
     * Get the keys for all of the input and files.
     *
     * @return array
     */
    
public function keys()
    {
        return 
array_merge(array_keys($this->input()), $this->files->keys());
    }

    
/**
     * Get all of the input and files for the request.
     *
     * @param  mixed  $keys
     * @return array
     */
    
public function all($keys null)
    {
        
$input array_replace_recursive($this->input(), $this->allFiles());

        if (! 
$keys) {
            return 
$input;
        }

        
$results = [];

        foreach (
is_array($keys) ? $keys func_get_args() as $key) {
            
Arr::set($results$keyArr::get($input$key));
        }

        return 
$results;
    }

    
/**
     * Retrieve an input item from the request.
     *
     * @param  string|null  $key
     * @param  mixed  $default
     * @return mixed
     */
    
public function input($key null$default null)
    {
        return 
data_get(
            
$this->getInputSource()->all() + $this->query->all(), $key$default
        
);
    }

    
/**
     * Retrieve input from the request as a Fluent object instance.
     *
     * @param  array|string|null  $key
     * @param  array  $default
     * @return IlluminateSupportFluent
     */
    
public function fluent($key null, array $default = [])
    {
        
$value is_array($key) ? $this->only($key) : $this->input($key);

        return new 
Fluent($value ?? $default);
    }

    
/**
     * Retrieve a query string item from the request.
     *
     * @param  string|null  $key
     * @param  string|array|null  $default
     * @return string|array|null
     */
    
public function query($key null$default null)
    {
        return 
$this->retrieveItem('query'$key$default);
    }

    
/**
     * Retrieve a request payload item from the request.
     *
     * @param  string|null  $key
     * @param  string|array|null  $default
     * @return string|array|null
     */
    
public function post($key null$default null)
    {
        return 
$this->retrieveItem('request'$key$default);
    }

    
/**
     * Determine if a cookie is set on the request.
     *
     * @param  string  $key
     * @return bool
     */
    
public function hasCookie($key)
    {
        return ! 
is_null($this->cookie($key));
    }

    
/**
     * Retrieve a cookie from the request.
     *
     * @param  string|null  $key
     * @param  string|array|null  $default
     * @return string|array|null
     */
    
public function cookie($key null$default null)
    {
        return 
$this->retrieveItem('cookies'$key$default);
    }

    
/**
     * Get an array of all of the files on the request.
     *
     * @return array<string, IlluminateHttpUploadedFile|IlluminateHttpUploadedFile[]>
     */
    
public function allFiles()
    {
        
$files $this->files->all();

        return 
$this->convertedFiles ??= $this->convertUploadedFiles($files);
    }

    
/**
     * Convert the given array of Symfony UploadedFiles to custom Laravel UploadedFiles.
     *
     * @param  array<string, SymfonyComponentHttpFoundationFileUploadedFile|SymfonyComponentHttpFoundationFileUploadedFile[]>  $files
     * @return array<string, IlluminateHttpUploadedFile|IlluminateHttpUploadedFile[]>
     */
    
protected function convertUploadedFiles(array $files)
    {
        return 
array_map(function ($file) {
            if (
is_null($file) || (is_array($file) && empty(array_filter($file)))) {
                return 
$file;
            }

            return 
is_array($file)
                ? 
$this->convertUploadedFiles($file)
                : 
UploadedFile::createFromBase($file);
        }, 
$files);
    }

    
/**
     * Determine if the uploaded data contains a file.
     *
     * @param  string  $key
     * @return bool
     */
    
public function hasFile($key)
    {
        if (! 
is_array($files $this->file($key))) {
            
$files = [$files];
        }

        foreach (
$files as $file) {
            if (
$this->isValidFile($file)) {
                return 
true;
            }
        }

        return 
false;
    }

    
/**
     * Check that the given file is a valid file instance.
     *
     * @param  mixed  $file
     * @return bool
     */
    
protected function isValidFile($file)
    {
        return 
$file instanceof SplFileInfo && $file->getPath() !== '';
    }

    
/**
     * Retrieve a file from the request.
     *
     * @param  string|null  $key
     * @param  mixed  $default
     * @return ($key is null ? array<string, IlluminateHttpUploadedFile|IlluminateHttpUploadedFile[]> : IlluminateHttpUploadedFile|IlluminateHttpUploadedFile[]|null)
     */
    
public function file($key null$default null)
    {
        return 
data_get($this->allFiles(), $key$default);
    }

    
/**
     * Retrieve data from the instance.
     *
     * @param  string|null  $key
     * @param  mixed  $default
     * @return mixed
     */
    
protected function data($key null$default null)
    {
        return 
$this->input($key$default);
    }

    
/**
     * Retrieve a parameter item from a given source.
     *
     * @param  string  $source
     * @param  string|null  $key
     * @param  string|array|null  $default
     * @return string|array|null
     */
    
protected function retrieveItem($source$key$default)
    {
        if (
is_null($key)) {
            return 
$this->$source->all();
        }

        if (
$this->$source instanceof InputBag) {
            return 
$this->$source->all()[$key] ?? $default;
        }

        return 
$this->$source->get($key$default);
    }

    
/**
     * Dump the items.
     *
     * @param  mixed  $keys
     * @return $this
     */
    
public function dump($keys = [])
    {
        
$keys is_array($keys) ? $keys func_get_args();

        
dump($keys !== [] ? $this->only($keys) : $this->all());

        return 
$this;
    }
}
Онлайн: 2
Реклама